Submission #1316881

#TimeUsernameProblemLanguageResultExecution timeMemory
1316881exoworldgdArranging Shoes (IOI19_shoes)C++20
10 / 100
0 ms332 KiB
#include<bits/stdc++.h> #define ll long long #define exoworldgd cin.tie(0)->sync_with_stdio(0),cout.tie(0) using namespace std; struct BIT{ int n;vector<int>t; BIT(int n):n(n),t(n+1){} void upd(int i,int v){for(i++;i<=n;i+=i&-i)t[i]+=v;} int qry(int i){int r=0;for(i++;i;i-=i&-i)r+=t[i];return r;} int qry(int l,int r){return qry(r)-(l?qry(l-1):0);} }; ll count_swaps(vector<int>s) { int n=s.size(),ans=0; map<int,queue<int>>mp; for(int i=0;i<n;i++)mp[s[i]].push(i); BIT bit(n); for(int i=0,cur,pos,a,b;i<n;i+=2){ cur=mp[s[i]].front(),mp[s[i]].pop(),pos=mp[-s[i]].front(),mp[-s[i]].pop(),a=cur+bit.qry(cur),b=pos+bit.qry(pos); if(a>b)swap(a,b); ans+=b-a-1,ans+=s[cur]>0,bit.upd(cur,-1),bit.upd(pos,-1),bit.upd(i,1),bit.upd(i+1,1); } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...