Submission #583889

#TimeUsernameProblemLanguageResultExecution timeMemory
5838898e7Arranging Shoes (IOI19_shoes)C++17
100 / 100
81 ms19568 KiB
//Challenge: Accepted #include <bits/stdc++.h> #include "shoes.h" #pragma GCC optimize("Ofast") using namespace std; #ifdef zisk void debug(){cout << endl;} template<class T, class ... U> void debug(T a, U ... b){cout << a << " ", debug(b...);} template<class T> void pary(T l, T r) { while (l != r) cout << *l << " ", l++; cout << endl; } #else #define debug(...) 0 #define pary(...) 0 #endif #define ll long long #define maxn 200005 #define mod 1000000007 #define pii pair<int, int> #define ff first #define ss second #define io ios_base::sync_with_stdio(0);cin.tie(0); struct BIT{ int bit[maxn]; void modify(int ind, int val) { ind++; for (;ind < maxn;ind += ind & (-ind)) bit[ind] += val; } int query(int ind) { ind++; int ret = 0; for (;ind > 0;ind -= ind & (-ind)) ret += bit[ind]; return ret; } }bit; vector<int> lef[maxn], rig[maxn]; long long count_swaps(std::vector<int> s) { int n = s.size(); vector<bool> p(n, 1); for (int i = 0;i < n;i++) bit.modify(i, 1); for (int i = 0;i < n;i++) { if (s[i] < 0) lef[-s[i]].push_back(i); else rig[s[i]].push_back(i); } for (int i = 1;i <= n;i++) { reverse(lef[i].begin(), lef[i].end()); reverse(rig[i].begin(), rig[i].end()); } ll ret = 0; for (int i = 0;i < n;i++) { if (!p[i]) continue; if (s[i] < 0) { int x = rig[-s[i]].back(); lef[-s[i]].pop_back(); rig[-s[i]].pop_back(); bit.modify(i, -1); bit.modify(x, -1); p[i] = p[x] = 0; ret += bit.query(x); } else { int x = lef[s[i]].back(); lef[s[i]].pop_back(); rig[s[i]].pop_back(); bit.modify(i, -1); bit.modify(x, -1); p[i] = p[x] = 0; ret += bit.query(x) + 1; } } return ret; } /* */
#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...