过了样例和第一个点,
#include <iostream>
#include <algorithm>
#define N 100005
#define int long long
const int m=100000000-3;
using namespace std;
int n,b[N],c[N],ans;
struct c_{int _a,_b;}a[N];
bool cmp(c_ x,c_ y){
if(x._a<=y._a)return 1;
return 0;
}
void m_sort(int l,int r){//这函数写的没问题
if(l==r)return;
int mid=l+(r-l)/2;
m_sort(l,mid);m_sort(mid+1,r);
int lp=l,rp=mid+1;
for(int i=l;i<=r;i++)
if(lp>mid){c[i]=b[rp++];}
else if(rp>r){c[i]=b[lp++];continue;}
else if(b[lp]<=b[rp])c[i]=b[lp++];
else c[i]=b[rp++],ans+=mid-lp+1;
for(int i=l;i<=r;i++)b[i]=c[i];
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i]._a;
for(int i=1;i<=n;i++)cin>>a[i]._b;
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++)b[i]=a[i]._b;
m_sort(1,n);//我觉得可以直接算几次排好,看着也不会超
cout<<ans%m;
return 0;
}