Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- https://codeforces.com/gym/101485 G
- #pragma GCC optimize("Ofast")
- #pragma GCC target("avx2")
- #include <bits/stdc++.h>
- using namespace std;
- const int maxn = 1 << 18;
- alignas(32) int a[maxn];
- alignas(32) int b[maxn];
- alignas(32) int c[maxn];
- alignas(32) int posb[maxn];
- alignas(32) int posc[maxn];
- alignas(32) int specialC[maxn];
- int getCount(int at) {
- int pb = posb[at];
- int pc = posc[at];
- int result = 0;
- for (int i = 0; i < pb; i++)
- result += b[i] < at && specialC[i] < pc;
- return result;
- }
- int main(int argc, char *argv[]) {
- ios::sync_with_stdio(false);
- cin.tie(nullptr);
- int n;
- cin >> n;
- for (int i = 0; i < n; i++) cin >> a[i], a[i]--;
- for (int i = 0; i < n; i++) cin >> b[i], b[i]--;
- for (int i = 0; i < n; i++) cin >> c[i], c[i]--;
- for (int i = 0; i < n; i++) posb[b[i]] = i;
- for (int i = 0; i < n; i++) posc[c[i]] = i;
- for (int i = 0; i < n; i++) b[posb[a[i]]] = i;
- for (int i = 0; i < n; i++) c[posc[a[i]]] = i;
- for (int i = 0; i < n; i++) posb[b[i]] = i;
- for (int i = 0; i < n; i++) posc[c[i]] = i;
- for (int i = 0; i < n; i++) specialC[i] = posc[b[i]];
- long long answer = 0;
- for (int i = 0; i < n; i++) answer += getCount(i);
- cout << answer;
- }
Advertisement
Add Comment
Please, Sign In to add comment