http://oj.ecustacm.cn/problem.php?id=1371
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=100010;
int n;
int a[N],b[N],c[N];
int cnt[N],s[N];//统计个数 , 前缀和
int at[N],ct[N];//小于B的元素个数 大于B的元素个数
int main(void)
{
cin>>n;
for(int i=0;i<n;i++) scanf("%d",&a[i]),a[i]++;//统一加1,是为了避免数组越界
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++) at[i]=s[b[i]-1];//统计小于B的元素的个数
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++) ct[i]=s[N-1]-s[b[i]];
long long ans=0;
for(int i=0;i<n;i++) ans+=(long long)at[i]*ct[i];
cout<<ans<<endl;
return 0;
}