AcWing 1236. 递增三元组
原题链接
中等
作者:
月亮事务所
,
2021-02-20 23:51:07
,
所有人可见
,
阅读 331
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long LL;
const int N = 100010; I
int n;
int a[N], b[N], c[N];
int as[N];
int cs[N];
int cnt[N], s[N];
int main()
{
scanf("%d",&n);
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];
memset(cnt, 0, sizeof cnt);
memset(s,0,sizeof s);
for (int i=O;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]];
LL res =0;
for (int i=0;i< n; i ++)
{
printf("%d %d\n", as[i],cs[i]);
res +=(LL)as[i]*cs[i];
}
cout << res << endl;
return 0;
}