Advertisement
yeskendir_sultanov

acmp - 112

May 12th, 2025
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.27 KB | Source Code | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. int n, k;
  6. vector<int> a, tree;
  7. long long res;
  8.  
  9. void update(int v, int tl, int tr, int pos, int x) {
  10.     if (tl == tr) {
  11.         tree[v] += x;
  12.     } else {
  13.         int tm = (tl + tr) / 2;
  14.         if (pos <= tm) {
  15.             update(v * 2, tl, tm, pos, x);
  16.         } else {
  17.             update(v * 2 + 1, tm + 1, tr, pos, x);
  18.         }
  19.         tree[v] = tree[v * 2] + tree[v * 2 + 1];
  20.     }
  21. }
  22.  
  23. int sum(int v, int tl, int tr, int l, int r) {
  24.     if (l > r) {
  25.         return 0;
  26.     }
  27.     if (tl == l && r == tr) {
  28.         return tree[v];
  29.     }
  30.     int tm = (tl + tr) / 2;
  31.     return sum(v * 2, tl, tm, l, min(r, tm)) + sum(v * 2 + 1, tm + 1, tr, max(tm + 1, l), r);
  32. }
  33.  
  34. int main() {
  35.     ios_base::sync_with_stdio(NULL);
  36.     cin.tie(0); cout.tie(0);
  37.     cin >> n >> k;
  38.    
  39.     a.resize(n, 0);
  40.     tree.resize(4 * n + 1, 0);
  41.    
  42.     while (k--) {
  43.         for (int i = 0; i < n; ++i) {
  44.             cin >> a[i];
  45.         }
  46.        
  47.         for (int i = 0; i < tree.size(); ++i) {
  48.             tree[i] = 0;
  49.         }
  50.        
  51.         for (int i = 0; i < n; ++i) {
  52.             res += sum(1, 1, n, a[i] + 1, n);
  53.             update(1, 1, n, a[i], +1);
  54.         }
  55.     }
  56.    
  57.     cout << res;
  58.     return 0;
  59. }
  60.  
  61.  
  62.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement