제출 #434819

#제출 시각아이디문제언어결과실행 시간메모리
434819magmagArranging Shoes (IOI19_shoes)C++17
10 / 100
29 ms7088 KiB
#include "shoes.h" #include <bits/stdc++.h> using namespace std; using ll = long long; const int mxN = 1e5+3; ll idx[mxN]; struct FenwickTree { ll tr[mxN]; ll LSB(ll x) { return (x) & (-x); } void add(ll i) { for (; i < mxN; i += LSB(i))++tr[i]; } ll rsq(ll i) { ll s = 0; for (; i > 0; i -= LSB(i))s += tr[i]; return s; } ll rsq(ll i, ll j) { return rsq(j) - (i > 1 ? rsq(i-1) : 0); } }; long long count_swaps(std::vector<int> s) { int n = s.size(); for (int i = 1; i <= n; ++i) { idx[abs(s[i-1])] = i; } FenwickTree ft; ll ans = 0; for (int i = 1; i <= n; ++i) { int curr = s[i-1]; if (idx[abs(curr)] == i)continue; int nidx = idx[abs(curr)]; ll dist = nidx - i - 1 - ft.rsq(i, nidx); if (s[i-1] > 0)++dist; ans += dist; ft.add(nidx); } 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...