fork download
  1. #include <bits/stdc++.h>
  2. #pragma GCC optimize("O3,unroll-loops")
  3. #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
  4. #define endl "\n"
  5. #define int long long
  6. #define double long double
  7. #define __builtin_popcount __builtin_popcountll
  8. #define join(z, x, y); merge(begin(x), end(x), begin(y), end(y), back_inserter(z));
  9. #define FastIO(); ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  10. using namespace std;
  11.  
  12. const int MAXN = 300003;
  13. const int BASE1 = 311;
  14. const int BASE2 = 997;
  15. const int INF = (int)1e18;
  16.  
  17. int n, a[MAXN], seg[4 * MAXN];
  18.  
  19. void update(int i, int l, int r, int pos){
  20. if(l == r){
  21. seg[i] += 1;
  22. }
  23. else{
  24. int m = l + r >> 1;
  25. if(pos <= m){
  26. update(2 * i, l, m, pos);
  27. }
  28. else{
  29. update(2 * i + 1, m + 1, r, pos);
  30. }
  31. seg[i] = seg[2 * i] + seg[2 * i + 1];
  32. }
  33. }
  34.  
  35. int get(int i, int l, int r, int u, int v){
  36. if(u > r || v < l) return 0;
  37. if(u <= l && r <= v) return seg[i];
  38. int m = l + r >> 1;
  39. return get(2 * i, l, m, u, v) + get(2 * i + 1, m + 1, r, u, v);
  40. }
  41.  
  42. signed main() {
  43. FastIO();
  44. cin >> n;
  45. for(int i = 0; i < n; i++){
  46. cin >> a[i];
  47. }
  48. int cnt = 0;
  49. for(int i = 0; i < n; i++){
  50. cnt += get(1, 0, n - 1, a[i] + 1, n - 1);
  51. update(1, 0, n - 1, a[i]);
  52. }
  53. cout << cnt << endl;
  54. for(int i = 0; i < n - 1; i++){
  55. cnt += n - 1 - 2 * a[i];
  56. cout << cnt << endl;
  57. }
  58. return (0 ^ 0);
  59. }
Success #stdin #stdout 0.01s 5288KB
stdin
Standard input is empty
stdout
0