Helicator

shift_alt.cpp

Dec 9th, 2021
622
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.18 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define int long long
  5. #define vi vector<int>
  6. #define ii pair<int,int>
  7. #define fi first
  8. #define sc second
  9. #define stoi stoll
  10. #define popcnt __builtin_popcount
  11. #define getbit(x, k) ((x >> k) & 1)
  12. #define all(x) (x).begin(),(x).end()
  13. #define FOR(i,j,k) for(int i=j; i<k; i++)
  14. #define look(a) cerr <<#a<<": "<<a<<endl;
  15. #define look2(a,b) cerr <<#a<<": "<<a<<" | "<<#b<<": "<<b<< endl;
  16.  
  17. vi f;
  18.  
  19. void update(int i, int a)
  20. {
  21.     i++;
  22.     while (i < f.size()){
  23.         f[i] += a;
  24.         i += i&-i;
  25.     }
  26. }
  27.  
  28. int sum(int i)
  29. {
  30.     int s = 0;
  31.     i++;
  32.     while (i > 0){
  33.         s += f[i];
  34.         i -= i&-i;
  35.     }
  36.     return s;
  37. }
  38.  
  39. void solve()
  40. {
  41.     int n;
  42.     cin >> n;
  43.     int a[n];
  44.     int ans = 0;
  45.     f.resize(n+1,0);
  46.     FOR(i,0,n) {
  47.         cin >> a[i];
  48.         ans += sum(n-1) - sum(a[i]);
  49.         update(a[i],1);
  50.     }
  51.     cout << ans << '\n';
  52.     FOR(i,0,n-1){
  53.         ans -= a[i];
  54.         ans += n - a[i] - 1;
  55.         cout << ans << '\n';
  56.     }
  57. }
  58.  
  59. signed main()
  60. {
  61.     cin.tie(0)->sync_with_stdio(0);
  62.     freopen("in", "r", stdin);
  63.     freopen("out", "w", stdout);
  64.     int T = 1;
  65.     // cin >> T;
  66.     while (T--) {
  67.         solve();
  68.         cout << '\n';
  69.     }
  70.     cerr << "Time elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
  71. }
Advertisement
Add Comment
Please, Sign In to add comment