fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. const ll inf=1e15,N=2e5+5;
  5. #define pb push_back
  6. #define ff first
  7. #define ss second
  8. #define pii pair<ll,ll>
  9.  
  10. ll bit[N];
  11.  
  12. void update(ll x,ll val)
  13. {
  14. for(;x<N;x+=x&-x)
  15. bit[x]+=val;
  16. }
  17.  
  18. ll get(ll x)
  19. {
  20. ll ans=0;
  21. for(;x>0;x-=x&-x)
  22. ans+=bit[x];
  23. return ans;
  24. }
  25.  
  26. int main() {
  27. ll n,i,j;
  28. string s;
  29. cin >> n >> s;
  30. vector<ll>pos[26];
  31. for(i=0;i<n;i++)
  32. pos[s[i]-'a'].pb(i);
  33. ll a[n],ps[26]={0};
  34. reverse(s.begin(),s.end());
  35. for(i=0;i<s.size();i++)
  36. {
  37. ll in=s[i]-'a';
  38. ll ind=pos[in][ps[in]];
  39. a[ind]=i+1;
  40. ps[in]++;
  41. }
  42. /*for(i=0;i<n;i++)
  43. cout << a[i] <<" ";*/
  44. ll ans=0;
  45. for(i=n-1;i>=0;i--)
  46. {
  47. ans+=get(a[i]);
  48. update(a[i],1);
  49. }
  50. cout << ans;
  51.  
  52. return 0;
  53. }
Success #stdin #stdout 0s 4940KB
stdin
6
cbaabc
stdout
Standard output is empty