Submission #154589

#TimeUsernameProblemLanguageResultExecution timeMemory
154589juckterArranging Shoes (IOI19_shoes)C++14
45 / 100
73 ms9448 KiB
#include "shoes.h" #include <bits/stdc++.h> using namespace std; typedef pair<int, int> ii; const int MAXN = 2e5 + 5; int BIT[MAXN]; void upd(int p, int v) { for(; p < MAXN; p += (p & -p)) BIT[p] += v; } int sum(int p) { int tot = 0; for(; p; p -= (p & -p)) tot += BIT[p]; return tot; } long long count_swaps(vector<int> s) { int n = s.size() / 2; vector<vector<int>> positions(n + 1); fill(BIT, BIT + MAXN, 0); for(int i = 1; i <= 2*n; i++) upd(i, 1); for(int i = 2*n - 1; i >= 0; i--) if(s[i] > 0) positions[s[i]].push_back(i); long long ans = 0; for(int i = 0; i < 2*n; i++) { if(s[i] < 0) { ans += sum(i); upd(i + 1, -1); int p = positions[-s[i]].back(); positions[-s[i]].pop_back(); ans += sum(p); upd(p + 1, -1); } } 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...