10pt求助
查看原帖
10pt求助
406811
zyy66666楼主2022/7/11 10:43
#include<bits/stdc++.h>
using namespace std;
int n,mod=1e8-3;
int a[100001],b[100001],p[100001],z[100001],aa[100001];
struct match{
    int s,d;
}m[100001];
struct matchh{
    int ss,dd;
}mm[100001];
int cmp(match l,match ll){
    return l.d<=ll.d;
}
int cmpp(matchh l,matchh ll){
    return l.dd<=ll.dd;
}
int cmppp(int l,int ll){
    return p[l]>=p[ll];
}
int lowbit(int o){
    return o&(-o);
}
void change(int x,int zz){
    while(x<=n){
        z[x]+=zz;
        x+=lowbit(x);
    }
}
int ask(int w){
    long long ans=0;
    while(w>=1){
        ans+=z[w];
        w-=lowbit(w);
    }
    return ans;
}       
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>m[i].d;
        m[i].s=i;
    }
    for(int i=1;i<=n;i++){
        cin>>mm[i].dd;
        mm[i].ss=i;
    }
    stable_sort(m+1,m+n+1,cmp);
    stable_sort(mm+1,mm+n+1,cmpp);
    for(int i=1;i<=n;i++){
        a[m[i].s]=i;
        b[mm[i].ss]=i;
    }
    for(int i=1;i<=n;i++){
        p[a[i]]=b[i];
        aa[i]=i;
    }
    stable_sort(aa+1,aa+n+1,cmppp);
    long long aans=0;
    for(int i=1;i<=n;i++){
        change(aa[i],1);
        aans+=ask(aa[i]-1);
        aans%=mod;
    }
    cout<<aans;
    return 0;
}

只过了第一个点

2022/7/11 10:43
加载中...