Submission #298192

#TimeUsernameProblemLanguageResultExecution timeMemory
298192AbelyanArranging Shoes (IOI19_shoes)C++17
45 / 100
113 ms38768 KiB
#include "shoes.h" #include <bits/stdc++.h> using namespace std; #define FOR(i,n) for (int i=0;i<(n);++i) const int N=1e6+6; priority_queue<int> mn[N],d; int fw[N]; int n; int get(int ind){ int ans=0; for(;ind>=0;ind=(ind&(ind+1))-1){ ans+=fw[ind]; } return ans; } void add(int ind,int val){ for(;ind<n;ind=ind|(ind+1)){ fw[ind]+=val; } } long long count_swaps(vector<int> s) { n=s.size(); FOR(i,n){ if (s[i]<0){ d.push(-i); } else{ mn[s[i]].push(-i); } } long long ans=0; FOR(i,n/2){ int a=-d.top(); d.pop(); //cout<<a<<endl; int b=-mn[-s[a]].top(); mn[-s[a]].pop(); //cout<<a<<" "<<b<<endl; if (b<a)ans++; ans+=a+b-4*i-1+get(a)+get(b); //cout<<ans<<endl; add(a,-1); add(b,-1); add(0,2); //cout<<a<<" "<<b<<endl; } 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...