Submission #171357

#TimeUsernameProblemLanguageResultExecution timeMemory
171357KubinArranging Shoes (IOI19_shoes)C++17
70 / 100
1039 ms43924 KiB
#include <map> #include <ext/pb_ds/assoc_container.hpp> #include "shoes.h" using namespace std; using namespace __gnu_pbds; template<typename T, typename Tk> using os_map = tree< T, Tk, less<T>, rb_tree_tag, tree_order_statistics_node_update >; template<typename T> using os_set = os_map<T, null_type>; long long count_swaps(vector<int> S) { const size_t n = S.size(); map<int, set<size_t>> pos; for(size_t i = 0; i < n; i++) pos[S[i]].insert(i); os_set<size_t> erased; size_t mex = 0; long long result = 0; while(erased.size() < n) { while(erased.find(mex) != erased.end()) mex++; auto it = pos[-S[mex]].begin(); auto i = *it; result += i - (mex + 1) - (erased.order_of_key(i) - erased.order_of_key(mex)); if(S[mex] > 0) result++; erased.insert(mex); pos[S[mex]].erase(mex); erased.insert(i); pos[-S[mex]].erase(i); } return result; }
#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...