Submission #1138844

#TimeUsernameProblemLanguageResultExecution timeMemory
1138844RufatArranging Shoes (IOI19_shoes)C++20
0 / 100
0 ms324 KiB
#include "shoes.h" #include <bits/stdc++.h> using namespace std; struct Fenwick { int n; vector<long long> fenw; Fenwick(int n) : n(n), fenw(n+1, 0) {} void update(int i, long long diff){ for(++i; i <= n; i += i & -i) fenw[i] += diff; } long long query(int i){ long long s = 0; for(++i; i > 0; i -= i & -i) s += fenw[i]; return s; } // Query the sum in [l, r] long long rangeQuery(int l, int r){ if(l > r) return 0; return query(r) - query(l-1); } }; long long count_swaps(std::vector<int> s) { int n = (int)s.size(); Fenwick fenw(n); for(int i = 0; i < n; i++){ fenw.update(i, 1); } unordered_map<int, vector<int>> leftStack; long long ans = 0; for(int i = 0; i < n; i++){ int size = abs(s[i]); if(s[i] < 0){ leftStack[size].push_back(i); } else { int L = leftStack[size].back(); leftStack[size].pop_back(); int R = i; int leftPos = min(L, R), rightPos = max(L, R); long long between = fenw.rangeQuery(leftPos+1, rightPos-1); ans += between; fenw.update(L, -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...