![](https://i-blog.csdnimg.cn/blog_migrate/a275faec49220e8ea9d47373ebfa13b3.png)
![](https://i-blog.csdnimg.cn/blog_migrate/51b1dbd914c412f39f3600e9f39b0f5b.png)
#include <bits/stdc++.h>
using namespace std;
const int N=1e5+10;
typedef long long ll;
int a[N],b[N],c[N];
ll sum;
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
for(int i=0;i<n;i++)
cin>>b[i];
for(int i=0;i<n;i++)
cin>>c[i];
sort(a,a+n);
sort(b,b+n);
sort(c,c+n);
for(int i=0;i<n;i++)
{
ll x = lower_bound(a, a + n, b[i]) - a;// lower_bound二分查找第一个大于或等于b[i]的数字,找到返回该数字的地址
ll y = n - (upper_bound(c, c + n, b[i]) - c);// upper_bound二分查找第一个大于b[i]的数字
sum+=x*y;
}
cout<<sum;
return 0;
}