Submission #159234

#TimeUsernameProblemLanguageResultExecution timeMemory
159234RoundMangoArranging Shoes (IOI19_shoes)C++14
0 / 100
276 ms269680 KiB
# include <bits/stdc++.h> using namespace std; queue <long long> q[2][200000]; long long n, idx, a[200000], ans, k, kx, xx[200000], m; int alg (long long x) { int num = 0; for (int i = x; i >= 1; i -= (i&(-i)) ) num += xx[i]; return num; } void upd (int x, int y) { for (int i = x; i <= n; i += (i&(-i)) ) xx[i] += y; } //int main() { // cin>>n; // for (int i = 1; i <= 2*n; i++) cin>>a[i]; long long count_swaps(std::vector <int> v) { n = v.size(); for (long long i = 0; i < n; i++) v[i] = a[i+1]; for (int i = 1; i <= n; i++) upd(i,1); for(int i = 1; i <= n; i++) { if (a[i] < 0) { if (q[1][abs(a[i])].empty()) q[0][abs(a[i])].push(i); else { ans += alg(i-1) - alg(q[1][abs(a[i])].front()-1); upd(q[1][abs(a[i])].front(), 1); upd(i, -1); q[1][abs(a[i])].pop(); } } else { if (q[0][a[i]].empty()) q[1][a[i]].push(i); else { ans += alg(i-1) - alg(q[0][a[i]].front()-1) - 1; upd(q[0][a[i]].front(), 1); upd(i, -1); q[0][a[i]].pop(); } } } 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...