Advertisement
pdpd123

Untitled

Feb 28th, 2019
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.95 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #define int long long
  3. #define mp make_pair
  4. #define endl '\n'
  5. using namespace std;
  6.  
  7. int a[100010];
  8.  
  9. int cnt(int a[],int l,int r){
  10.  
  11.     int mid=l+r>>1;
  12.     int ans=0;
  13.  
  14.     if(l+1==r) return 0;
  15.  
  16.     ans+=cnt(a,l,mid);
  17.     ans+=cnt(a,mid,r);
  18.  
  19.     vector<int> lar,rar;
  20.  
  21.     for(int i=l;i<mid;i++)
  22.         lar.push_back(a[i]);
  23.     for(int i=mid;i<r;i++)
  24.         rar.push_back(a[i]);
  25.  
  26.     int lptr=0,rptr=0,ptr=l;
  27.  
  28.     while(ptr<r){
  29.  
  30.         if(rptr>=rar.size() || (lptr<lar.size() && lar[lptr]<rar[rptr]))
  31.             a[ptr++]=lar[lptr++];
  32.         else
  33.             a[ptr++]=rar[rptr++],ans+=lar.size()-lptr;
  34.     }
  35.     //cout << "MS " << l << ' ' << r << " ans= " << ans << endl;
  36.     return ans;
  37. }
  38.  
  39. signed main(){
  40.     int kase=0;
  41.     int n;
  42.     while(cin >> n,n){
  43.  
  44.         for(int i=0;i<n;i++)
  45.             cin >> a[i];
  46.  
  47.         cout << "Case #" << ++kase << ": " << cnt(a,0,n) << endl;
  48.     }
  49.  
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement