fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int n;
  4. int bit[1000001];
  5.  
  6. void update(int pos)
  7. {
  8. while(pos<=n)
  9. {
  10. bit[pos]++;
  11. pos= pos + (pos & -pos);
  12. }
  13. }
  14.  
  15. int getsum(int pos)
  16. {
  17. int sum=0;
  18. while(pos>0)
  19. {
  20. sum+=bit[pos];
  21. pos= pos - (pos & -pos);
  22. }
  23. return sum;
  24. }
  25.  
  26. int main()
  27. {
  28. ios_base::sync_with_stdio(false);
  29. cin>>n;
  30. vector<long long> a;
  31. int temp;
  32. for(temp=0;temp<n;temp++)
  33. {
  34. long long x;
  35. cin>>x;
  36. a.push_back(x);
  37. }
  38.  
  39. vector<long long> b(a);
  40.  
  41. sort(b.begin(),b.end());
  42.  
  43. for(temp=0;temp<n;temp++)
  44. {
  45. a[temp]=lower_bound(b.begin(),b.end(),a[temp])-b.begin()+1;
  46. update(a[temp]);
  47. }
  48.  
  49. int cnt[n];
  50.  
  51. for(temp=0;temp<n;temp++)
  52. {
  53. cnt[temp]=getsum(a[temp]);
  54. cout<<cnt[temp]<<" ";
  55. }
  56. cout<<"\n";
  57. }
Success #stdin #stdout 0s 7360KB
stdin
6
3 2 3 1 1 2
stdout
6 4 6 2 2 4