Submission #414043

#TimeUsernameProblemLanguageResultExecution timeMemory
414043illyakrArranging Shoes (IOI19_shoes)C++14
10 / 100
4 ms5028 KiB
#include "shoes.h" #include <bits/stdc++.h> using namespace std; int n; int a[201010]; int t[801010]; int tAdd[801010]; void build(int v, int vl, int vr) { if (vl == vr) { t[v] = vl; return; } int vm = (vl + vr) / 2; build(2 * v, vl, vm); build(2 * v + 1, vm + 1, vr); } void push(int v, int vl, int vr) { if (tAdd[v] == 0)return; if (vl == vr)t[v] += tAdd[v]; else { tAdd[2 * v] += tAdd[v]; tAdd[2 * v + 1] += tAdd[v]; } tAdd[v] = 0; } void upd(int v, int vl, int vr, int l, int r, int val) { push(v, vl, vr); if (l <= vl && vr <= r) { tAdd[v] += val; push(v, vl, vr); return; } if (r < vl || vr < l)return; int vm = (vl + vr) / 2; upd(2 * v, vl, vm, l, r, val); upd(2 * v + 1, vm + 1, vr, l, r, val); } int get(int v, int vl, int vr, int pos) { if (vl == vr)return t[v]; int vm = (vl + vr) / 2; if (pos <= vm)return get(2 * v, vl, vm, pos); else return get(2 * v + 1, vm + 1, vr, pos); } vector<int> g[201010]; int pointer[201010]; int ans = 0; bool used[201010]; int ID[201010]; long long count_swaps(std::vector<int> s) { n = s.size(); for (int i = 1; i <= n; i++) a[i] = s[i - 1]; build(1, 1, n); for (int i = 1; i <= n; i++) g[a[i] + n + 1].push_back(i); for (int i = 1; i <= n; i++)ID[i] = i; for (int i = 1; i <= n; i++) { if (used[i])continue; if (a[i] < 0) { for (int j = i + 1; j <= n; j++) { if (a[j] == -a[i]) { ans += (ID[j] - ID[i] - 1); used[i] = true; used[j] = true; break; } ID[j]++; } continue; } if (a[i] > 0) { for (int j = i + 1; j <= n; j++) { if (a[j] == -a[i]) { ans += (ID[j] - ID[i]); used[i] = true; used[j] = true; break; } ID[j]++; } continue; } } 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...