返回题解分享
讨论 / 题解分享/ 帖子详情

递增三元组(编程题) - 题解

#include <bits/stdc++.h>
typedef long long LL;
using namespace std;

const int N = 1e5 + 10;
LL n,k;
int a[N],b[N],c[N];
LL res;
int cnt[N];

int main()
{
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
for(int j=1;j<=n;j++) cin>>b[j];
for(int i=1;i<=n;i++) cin>>c[i];
sort(a+1,a+n+1);
sort(c+1,c+n+1);
sort(b+1,b+n+1);

int numa=1,numc=1;
for(int i=1;i<=n;i++)
{
	while(numa<=n && a[numa]<b[i]) numa++;
	while(numc<=n && c[numc]<=b[i]) numc++;
	res+=(LL)(numa-1)*(n-numc+1);
}

cout<<res<<endl;
return 0;


}
0 回复 0 转发 0 喜欢 2 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!