Advertisement
yeskendir_sultanov

K-inversions

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