Submission #783276

#TimeUsernameProblemLanguageResultExecution timeMemory
783276ivazivaArranging Shoes (IOI19_shoes)C++14
100 / 100
237 ms28348 KiB
//#include "shoes.h" #include <bits/stdc++.h> using namespace std; #define MAXN 200010 long long nn; long long niz[MAXN]; long long fenvik[MAXN]; map<long long,vector<long long>> mapa; void update(long long pos,long long val) { while (pos<=nn) { fenvik[pos]+=val; pos+=pos&(-pos); } } long long query(long long x) { long long ans=0; while (x>0) { ans+=fenvik[x]; x-=x&(-x); } return ans; } long long count_swaps(std::vector<int> s) { nn=s.size(); long long sol=0; for (long long i=1;i<=nn;i++) update(i,1); for (long long i=1;i<=nn;i++) niz[i]=s[i-1]; for (long long i=nn;i>=1;i--) mapa[niz[i]].push_back(i); for (long long i=1;i<=nn;i++) { if (query(i)-query(i-1)!=1) continue; long long poz=mapa[-niz[i]].back(); mapa[niz[i]].pop_back(); mapa[-niz[i]].pop_back(); update(i,-1); update(poz,-1); sol+=query(poz)-query(i)+(niz[i]>0); } return sol; }
#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...