Submission #1025963

#TimeUsernameProblemLanguageResultExecution timeMemory
1025963vaneaArranging Shoes (IOI19_shoes)C++14
100 / 100
267 ms17492 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #include "shoes.h" using namespace std; using namespace __gnu_pbds; using ll = long long; template<class T> using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; ll count_swaps(vector<int> v) { int n = v.size(); ll ans = 0; multiset<array<int, 2>> m; for(int i = 0; i < n; i++) { m.insert({v[i], i}); } map<int, bool> vis; ordered_set<int> past; for(int i = 0; i < n; i++) { if(vis[i]) continue; auto it = m.lower_bound({-v[i], -1}); int idx = (*it)[1]; int mn = past.order_of_key(idx)-past.order_of_key(i); vis[i] = vis[idx] = true; m.erase(it); m.erase({v[i], i}); if(v[i] > 0) { ans += (idx-i)-mn; } else { ans += (idx-i-1)-mn; } past.insert(idx); } return ans; } /* int main() { ll ans = count_swaps({-2, -1, 2, 1}); cout << 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...