Submission #249369

#TimeUsernameProblemLanguageResultExecution timeMemory
249369I_am_muslimArranging Shoes (IOI19_shoes)C++14
10 / 100
76 ms135036 KiB
# include <bits/stdc++.h> # define ll long long #include <ext/pb_ds/assoc_container.hpp> //required #include <ext/pb_ds/tree_policy.hpp> //required # define speed ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0) using namespace std; using namespace __gnu_pbds; //required template <typename T> using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; const int MAX_N = 100007; ll count_swaps( vector < int > s ) { speed; ll n = s.size(), sz = 0; ll ans = 0; vector < int > used(n); ordered_set<int> ids; vector < queue < int > > vc(2 * MAX_N); for ( int i = 0; i < n; i++ ) { s[i] += MAX_N; vc[s[i]].push( i ); } // cout << "Done 1" << endl; for ( int i = 0; i < n; i++ ) { if ( used[i] ) { continue; } s[i] -= MAX_N; int l = i, r = vc[-s[i] + MAX_N].front(); // cout << "Done 2 " << l << ' ' << r << endl; vc[ s[i] + MAX_N ].pop(); int rr = r; used[r] = 1; vc[-s[i] + MAX_N].pop(); ll x = ids.order_of_key(l+1); l += x; x = ids.order_of_key(r + 1); r += x; //auto it = upper_bound( ids.begin(), ids.end(), i ); //it--; //int x = it - ids.begin(); //x = sz - x; //l += x; //it = upper_bound( ids.begin(), ids.end(), r ); //it--; //x = it - ids.begin(); //x = sz - x; //r += x; ans += r - l - 1; if ( s[i] > 0 ) { ans++; } sz++; ids.insert( rr ); //sort (ids.begin(), ids.end()); } return ans; } //int main() { // ll n; // cin >> n; // vector < int > S(2 * n); // for ( ll i = 0; i < 2 * n; i++ ) { // cin >> S[i]; // } // cout << count_swaps( S ); //}
#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...