Submission #867106

#TimeUsernameProblemLanguageResultExecution timeMemory
867106MalixArranging Shoes (IOI19_shoes)C++14
10 / 100
0 ms348 KiB
#include "shoes.h" #include<bits/stdc++.h> using namespace std; long long count_swaps(std::vector<int> s) { int n=s.size(); int pos=0; vector<int> arr(n,0); vector<int> arr2; vector<vector<int>> po(n+1); vector<vector<int>> ne(n+1); for(int i=0;i<n;i++){ if(s[i]<0)ne[-s[i]].push_back(i); else po[s[i]].push_back(i); } long long ans=0; while(pos<n){ if(arr[pos]==1){ pos++;continue; } if(s[pos]<0){ int it=po[-s[pos]][0]; po[-s[pos]].erase(po[-s[pos]].begin()); ne[-s[pos]].erase(ne[-s[pos]].begin()); int it1=lower_bound(arr2.begin(),arr2.end(),it)-arr2.begin(); int it2=lower_bound(arr2.begin(),arr2.end(),pos)-arr2.begin(); ans+=it-pos-1-it2+it1; s[pos]=0;s[it]=0; arr[pos]=1;arr[it]=1; arr2.push_back(it-1); } else{ int it=ne[s[pos]][0]; ne[s[pos]].erase(ne[s[pos]].begin()); po[s[pos]].erase(po[s[pos]].begin()); int it1=lower_bound(arr2.begin(),arr2.end(),it)-arr2.begin(); int it2=lower_bound(arr2.begin(),arr2.end(),pos)-arr2.begin(); ans+=it-pos-it2+it1; s[pos]=0;s[it]=0; arr[pos]=1;arr[it]=1; arr2.push_back(it-1); } sort(arr2.begin(),arr2.end(),greater<int>()); pos++; } 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...