제출 #1266685

#제출 시각아이디문제언어결과실행 시간메모리
1266685cmiucArranging Shoes (IOI19_shoes)C++20
100 / 100
164 ms179284 KiB
#include <iostream> #include <queue> #include <algorithm> #include "shoes.h" using namespace std; queue<int> Q[1<<18]; int ft[1<<18]; void add(int i, int v){ for (;i < (1<<18);i += i & -i) ft[i] += v; } int get(int i, int Ans = 0){ for (; i > 0; i -= i & -i) Ans += ft[i]; return Ans; } int get(int l, int r, int c){ c = get(r) - get(l - 1); add(l, 1); return c; } long long count_swaps(vector<int> v){ long long Ans = 0; int n = v.size() / 2; for (int i=0;i<n + n;i++){ if (v[i] < 0){ if (Q[-v[i] + n + 1].size() == 0) Q[v[i] + n + 1].push(i + 1), add(i + 1, 1); else Ans += get(Q[-v[i] + n + 1].front(), i, 0), Q[-v[i] + n + 1].pop(); } else{ if (Q[-v[i] + n + 1].size() == 0) Q[v[i] + n + 1].push(i + 1), add(i + 1, 1); else Ans += get(Q[-v[i] + n + 1].front(), i, 0) - 1, Q[-v[i] + n + 1].pop(); } } 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...