제출 #386932

#제출 시각아이디문제언어결과실행 시간메모리
386932danielcm585Arranging Shoes (IOI19_shoes)C++14
10 / 100
5 ms5100 KiB
#include "shoes.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 2e5; const int ADD = 1e5; int n; int pr[N+2], bit[N+2]; vector<int> ls[N+2]; void update(int x, int v) { for (int i = x; i <= n; i += i&-i) bit[i] += v; } int query(int x, int y) { int ret = 0; for (int i = y; i; i -= i&-i) ret += bit[i]; for (int i = x-1; i; i -= i&-i) ret -= bit[i]; return ret; } ll count_swaps(vector<int> s) { n = s.size(); for (int i = 0; i < n; i++) { if (!ls[-s[i]+ADD].empty()) { int x = ls[-s[i]+ADD].back(); ls[-s[i]+ADD].pop_back(); pr[x] = i; } else ls[s[i]+ADD].push_back(i); update(i+1,+1); } ll ans = 0; for (int i = 0; i < n; i++) { if (!pr[i]) continue; ans += query(i+2,pr[i]) + (s[i] > 0); update(pr[i]+1,-1); } return ans; } /* 3 -2 2 2 -2 -2 2 3 -2 3 4 2 -4 -3 */
#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...