Submission #1298792

#TimeUsernameProblemLanguageResultExecution timeMemory
1298792adiatArranging Shoes (IOI19_shoes)C++20
100 / 100
525 ms155404 KiB
#include<bits/stdc++.h> using namespace std; #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; #include "shoes.h" #define ll long long using ordered_set = tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update>; long long count_swaps(std::vector<int> v) { ll ans =0; map<int,deque<int>> tag,rtag; ordered_set s; for(int i=0; i<v.size(); i++) { tag[v[i]].push_back(i); s.insert(i); } while(!s.empty()) { // cout<<s.size(); auto x=s.begin(); if(v[*x]<0 ) { auto y=s.find(tag[-v[*x]][0]); ans+=s.order_of_key(tag[-v[*x]][0])-1; tag[-v[*x]].pop_front(); tag[v[*x]].pop_front(); s.erase(x); s.erase(y); } else { auto y= s.find(tag[-v[*x]][0]); ans+=s.order_of_key(tag[-v[*x]][0]); tag[-v[*x]].pop_front(); tag[v[*x]].pop_front(); s.erase(x); s.erase(y); } } return ans; } // #include "shoes.h" // #include <cstdio> // #include <cassert> // using namespace std; // int main() { // int n; // assert(1 == scanf("%d", &n)); // vector<int> S(2 * n); // for (int i = 0; i < 2 * n; i++) // assert(1 == scanf("%d", &S[i])); // fclose(stdin); // long long result = count_swaps(S); // printf("\n%lld\n", result); // fclose(stdout); // return 0; // }
#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...