题目描述
给定三个整数数组
A=[A1,A2,…AN],
B=[B1,B2,…BN],
C=[C1,C2,…CN],
请你统计有多少个三元组 (i,j,k) 满足:
- 1≤i,j,k≤N
- Ai<Bj<Ck
输入格式
第一行包含一个整数 N。
第二行包含 N 个整数 A1,A2,…AN。
第三行包含 N 个整数 B1,B2,…BN。
第四行包含 N 个整数 C1,C2,…CN。
输出格式
一个整数表示答案。
数据范围
1≤N≤105,
0≤Ai,Bi,Ci≤105
输入样例:
3
1 1 1
2 2 2
3 3 3
输出样例:
27
算法
(暴力枚举) O(n2)
write here…
时间复杂度
write here…
空间复杂度
write here…
C++ 代码
#include <iostream>
using namespace std;
const int N=1e5+10;
typedef long long ll;
ll temp,res=0;
ll a[N],b[N],c[N];
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>temp,a[temp]++;
for(int i=0;i<n;i++)
cin>>b[i];
for(int i=0;i<n;i++)
cin>>temp,c[temp]++;
//上面是输入
for(int i=1;i<N;i++)
a[i]+=a[i-1];
for(int i=N;i>0;i--)
c[i]+=c[i+1];
for(int i=0;i<n;i++)
res+=a[b[i]-1]*c[b[i]+1];
cout<<res;
}