Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- #define Woody
- #define int long long
- #define lowbit(x) (x&-x)
- #define rep(n) for(int i=0;i<n;i++)
- #define mp make_pair
- #define eb emplace_back
- #define F first
- #define S second
- #define all(v) v.begin(),v.end()
- #define SETIO(s) ifstream cin(s+".in");ofstream cout(s+".out");
- #ifdef Woody
- #define quick ios::sync_with_stdio(0);cin.tie(0);
- #else
- #define quick
- #endif
- #define INF INT64_MAX
- using namespace std;
- typedef pair<int,int> pii;
- struct BIT{
- int n;
- vector<int> bit;
- void init(int l){
- n=l;
- bit.assign(n+1,0);
- }
- void add(int x,int val){
- for(int i=x;i<=n;i+=lowbit(i)){
- bit[i]+=val;
- }
- }
- int query(int x){
- int sum=0;
- for(int i=x;i>0;i-=lowbit(i)) sum+=bit[i];
- return sum;
- }
- }tree;
- signed main(){
- quick
- int n;
- int c=0;
- while(cin>>n&&n)
- {
- vector<int> v(n);
- vector<int>v2;
- rep(n) cin>>v[i],v2.eb(v[i]);
- sort(all(v2));
- v2.erase(unique(all(v2)),v2.end());
- int l=v2.size();
- tree.init(l);
- int ans=0;
- rep(n){
- int k=lower_bound(all(v2),v[i])-v2.begin()+1;
- ans+=tree.query(l)-tree.query(k);
- tree.add(k,1);
- }
- cout<<"Case #"<<++c<<": "<<ans<<"\n";
- }
- }
Add Comment
Please, Sign In to add comment