Submission #873534

#TimeUsernameProblemLanguageResultExecution timeMemory
873534CutebolArranging Shoes (IOI19_shoes)C++17
50 / 100
320 ms31316 KiB
#include "shoes.h" #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace std ; using namespace __gnu_pbds; tree < int , null_type , less < int > , rb_tree_tag,tree_order_statistics_node_update > st ; const int N = 2e5 + 5 ; map <int , set <int>> l , r ; bool f[N] ; long long count_swaps(vector<int> s) { int n = s.size() , ans = 0 , cnt = 0 ; for ( int i = 0 ; i < n ; i ++ ){ if ( s[i] < 0 ) l[-s[i]].insert(i) ; else r[s[i]].insert(i) ; } for ( int i = 0 ; i < n ; i ++ ){ if ( f[i] == 1 ){ st.erase(i);cnt -- ; continue ;} if ( s[i] < 0 ){ int ind = *r[-s[i]].begin() ; r[-s[i]].erase(r[-s[i]].begin()) ; l[-s[i]].erase(l[-s[i]].begin()) ; st.insert(ind) ; int x = st.order_of_key(ind) ; ans += ind-i-1-x ; f[ind] = 1 ; } else{ int ind = *l[s[i]].begin() ; l[s[i]].erase(l[s[i]].begin()) ; r[s[i]].erase(r[s[i]].begin()) ; st.insert(ind) ; int x = st.order_of_key(ind) ; ans += ind-i-x ; f[ind] = 1 ; } cnt ++ ; } 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...