记录每个数出现的位置,利用前缀和 O(n)
时间复杂度更优秀,考虑的细节更少
#include<bits/stdc++.h>
#define int long long
#define x first
#define y second
#define de(x) cout<<#x<<" = "<<x<<" "
#define deg(x) cout<<#x<<" = "<<x<<endl
using namespace std;
const int N=1e5+10;
typedef pair<int,int> PII;
int a[N],b[N],c[N];
int sa[N],sc[N];
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
sa[a[i]]++;
}
for(int i=1;i<=n;i++)cin>>b[i];
for(int i=1;i<=n;i++)
{
cin>>c[i];
sc[c[i]]++;
}
for(int i=1;i<=N-1;i++)
sa[i]+=sa[i-1],sc[i]+=sc[i-1];
int res=0;
for(int i=1;i<=n;i++)
{
int x=b[i];
res+=sa[x-1]*(sc[N-1]-sc[x]);
}
cout<<res<<endl;
return 0;
}