Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int N = 60001;
- int n;
- int a[N], st[N * 5];
- void update(int id, int l, int r, int u, int v, int val)
- {
- if (v < l || r < u) return;
- if (u <= l && r <= v) {
- st[id] += val;
- return;
- }
- int mid = (l+r) / 2;
- update(id * 2, l, mid, u, v, val);
- update(id * 2 + 1, mid + 1, r, u, v, val);
- st[id] = st[id*2] + st[id*2+1];
- }
- int get(int id, int l, int r, int u, int v)
- {
- if (v < l || r < u) return 0;
- if (u <= l && r <= v)
- return st[id];
- int mid = (l+r) / 2;
- int t1 = get(id * 2, l, mid, u, v);
- int t2 = get(id * 2 + 1, mid + 1, r, u, v);
- return t1 + t2;
- }
- int main()
- {
- cin >> n;
- int m = 0;
- for (int i = 1; i <= n; i++) {
- cin >> a[i];
- m = max(m, a[i]);
- }
- int ans = 0;
- for(int i = n; i >= 1; i--) {
- int t = get(1, 1, m, 1, a[i]-1);
- ans = ans + t;
- update(1, 1, m, a[i], a[i], 1);
- }
- cout << ans;
- }
- /*
- Cho một dãy số a1.. aN.
- Một nghịch thế là một cặp số u, v sao cho u < v và au > av.
- Nhiệm vụ của bạn là đếm số nghịch thế.
- 3
- 3 1 2
- -> 2
- */
Advertisement
Add Comment
Please, Sign In to add comment