yuhung94

Untitled

Aug 31st, 2021
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.16 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #define Woody
  3. #define int long long
  4. #define lowbit(x) (x&-x)
  5. #define rep(n) for(int i=0;i<n;i++)
  6. #define mp make_pair
  7. #define eb emplace_back
  8. #define F first
  9. #define S second
  10. #define all(v) v.begin(),v.end()
  11. #define SETIO(s) ifstream cin(s+".in");ofstream cout(s+".out");
  12. #ifdef Woody
  13. #define quick ios::sync_with_stdio(0);cin.tie(0);
  14. #else
  15. #define quick
  16. #endif
  17. #define INF INT64_MAX
  18. using namespace std;
  19. typedef pair<int,int> pii;
  20. struct BIT{
  21.     int n;
  22.     vector<int> bit;
  23.     void init(int l){
  24.         n=l;
  25.         bit.assign(n+1,0);
  26.     }
  27.     void add(int x,int val){
  28.         for(int i=x;i<=n;i+=lowbit(i)){
  29.             bit[i]+=val;
  30.         }
  31.     }
  32.     int query(int x){
  33.         int sum=0;
  34.         for(int i=x;i>0;i-=lowbit(i)) sum+=bit[i];
  35.         return sum;
  36.     }
  37. }tree;
  38. signed main(){
  39.     quick
  40.     int n;
  41.     int c=0;
  42.     while(cin>>n&&n)
  43.     {
  44.         vector<int> v(n);
  45.         vector<int>v2;
  46.         rep(n) cin>>v[i],v2.eb(v[i]);
  47.         sort(all(v2));
  48.         v2.erase(unique(all(v2)),v2.end());
  49.         int l=v2.size();
  50.         tree.init(l);
  51.         int ans=0;
  52.         rep(n){
  53.             int k=lower_bound(all(v2),v[i])-v2.begin()+1;
  54.             ans+=tree.query(l)-tree.query(k);
  55.             tree.add(k,1);
  56.         }
  57.         cout<<"Case #"<<++c<<": "<<ans<<"\n";
  58.     }
  59.    
  60. }
  61.  
Add Comment
Please, Sign In to add comment