AcWing 1236. 递增三元组
原题链接
中等
作者:
dadfad
,
2025-03-06 12:26:02
· 福建
,
所有人可见
,
阅读 1
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using ll = long long;
const int N = 1e5+10;
int a[N], b[N], c[N];
int as[N], cs[N];
int cnt[N], s[N];
using namespace std;
int main()
{
int n; cin >> n;
for(int i = 1; i <= n; i ++) cin >> a[i], a[i]++;
for(int i = 1; i <= n; i ++) cin >> b[i], b[i]++;
for(int i = 1; i <= n; i ++) cin >> c[i], c[i]++;
for(int i = 1; i <= n; i ++) cnt[a[i]]++;
for(int i = 1; i < N; i ++) s[i] = s[i-1] + cnt[i];
for(int i = 1; i <= n; i ++) as[i] = s[b[i]-1];
memset(cnt, 0, sizeof cnt);
memset(s, 0, sizeof s);
for(int i = 1; i <= n; i ++) cnt[c[i]]++;
for(int i = 1; i < N; i ++) s[i] = s[i-1] + cnt[i];
for(int i = 1; i <= n; i ++) cs[i] = s[N-1] - s[b[i]];
ll res = 0;
for(int i = 1; i <= n; i ++) res += (ll)as[i] * cs[i];
cout << res;
return 0;
}