题目
{
cin>>n;
//+1是因为防止后面s[b[i]-1]索引为负数
for(int i=0;i<n;i++)scanf("%d",&a[i]),a[i]++;
for(int i=0;i<n;i++)scanf("%d",&b[i]),b[i]++;
for(int i=0;i<n;i++)scanf("%d",&c[i]),c[i]++;
for(int i=0;i<n;i++)cnt[a[i]]++;
for(int i=1;i<N;i++)s[i]=s[i-1]+cnt[i];
for(int i=0;i<n;i++)as[i]=s[b[i]-1];//比b[i]小的a有多少个
memset(cnt,0,sizeof cnt);
memset(s,0,sizeof s);
for(int i=0;i<n;i++)cnt[c[i]]++;
for(int i=1;i<N;i++)s[i]=s[i-1]+cnt[i];
for(int i=0;i<n;i++)cs[i]=s[N-1]-s[b[i]];//比b[i]大的c有多少个
long long ans=0;
for(int i=0;i<n;i++){
ans+=(long long )cs[i]*as[i];
}
cout<<ans<<endl;
return 0;
}