Submission #1114615

#TimeUsernameProblemLanguageResultExecution timeMemory
1114615lftroqArranging Shoes (IOI19_shoes)C++14
100 / 100
239 ms273736 KiB
#include<bits/stdc++.h> #include "shoes.h" typedef long long ll; using namespace std; const int N=200005; int n; queue<int> ql[N],qr[N]; int bit[N]; void update(int x,int v){for(;x<=n;x+=(x&(-x))) bit[x]+=v;} int get(int x){int ans=0;for(;x;x-=(x&(-x))) ans+=bit[x];return ans;} long long count_swaps(std::vector<int> s) { ll ans=0; n=(int)s.size(); for(int i=0;i<(int)s.size();i++) { if(s[i]<0) { s[i]*=-1; if(qr[s[i]].empty()) ql[s[i]].push(i+1); else { int x=qr[s[i]].front(); int temp=get(x); ans+=i-x+1-temp; update(x,1); update(i+2,-1); qr[s[i]].pop(); } } else { if(ql[s[i]].empty()) qr[s[i]].push(i+1); else { int x=ql[s[i]].front(); int temp=get(x); ans+=i-x-temp; update(x,1); update(i+2,-1); ql[s[i]].pop(); } } } 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...