Submission #379620

#TimeUsernameProblemLanguageResultExecution timeMemory
379620SuhaibSawalha1Arranging Shoes (IOI19_shoes)C++14
10 / 100
1 ms364 KiB
#include "shoes.h" #include <bits/stdc++.h> using namespace std; vector<int> fen; int n; void update (int i, int x) { for (++i; i <= n; i += i&-i) { fen[i] += x; } } int query (int i) { int ans = 0; for (++i; i; i -= i&-i) { ans += fen[i]; } return ans; } int query (int i, int j) { return query(j) - query(i - 1); } long long count_swaps(vector<int> a) { n = a.size(); vector<vector<int>> p(n + 1); for (int i = 0; i < n; ++i) { if (a[i] > 0) { p[a[i]].push_back(i); } } fen.resize(n + 1); long long ans = 0; for (int i = n - 1; ~i; --i) { if (a[i] < 0) { int newi = i - query(i), newp = p[-a[i]].back() - query(p[-a[i]].back()); ans += abs(newi - newp) - (newi < newp); update(i + 1, -1); update(p[-a[i]].back(), 1); p[-a[i]].pop_back(); } } 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...