Submission #832998

#TimeUsernameProblemLanguageResultExecution timeMemory
832998Halym2007Arranging Shoes (IOI19_shoes)C++17
100 / 100
343 ms36380 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define sz size() #define pb push_back map <int, vector <int>> m; map <int, vector <int>> mp; int st[524287]; map <int, bool> vis; int tap (int ind, int x, int y, int l, int r) { if (l > y or x > r) { return 0; } if (l <= x and y <= r) { return st[ind]; } return tap (ind * 2 + 1, x, (x + y) / 2, l, r) + tap (ind * 2 + 2, (x + y) / 2 + 1, y, l, r); } void update (int ind, int l, int r, int x) { if (l > x or x > r) return; if (l == r) { st[ind]++; return; } update (ind * 2 + 1, l, (l + r) / 2, x); update (ind * 2 + 2, (l + r) / 2 + 1, r, x); st[ind] = st[ind * 2 + 1] + st[ind * 2 + 2]; } ll count_swaps(vector<int> S) { int n = S.sz; ll jogap = 0; for (int i = n - 1; i > 0; i--) { if (S[i] > 0) m[S[i]].pb (i); else mp[S[i]].pb (i); } for (int i = 0; i < n; ++i) { if (vis[i]) { continue; } // r we l saylamaly int l = i, r; vis[i] = 1; if (S[i] < 0) { r = m[-S[i]].back(); while (vis[r]) { m[-S[i]].pop_back(); r = m[-S[i]].back(); } vis[r] = 1; m[-S[i]].pop_back(); } else { r = mp[-S[i]].back(); while (vis[r]) { mp[-S[i]].pop_back(); r = mp[-S[i]].back(); } vis[r] = 1; mp[-S[i]].pop_back(); } int jog = r - l - 1; if (S[i] > 0) jog++; jog -= tap (0, 0, n - 1, i, r); update (0, 0, n - 1, r); jogap += (ll)jog; } return jogap; } // int main() { // freopen("input1.txt", "r", stdin); // int n; // cin >> n; // vector<int> S(2 * n); // for (int i = 0; i < 2 * n; i++) // cin >> S[i]; // ll result = count_swaps(S); // cout << result << '\n'; // 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...