제출 #1274187

#제출 시각아이디문제언어결과실행 시간메모리
1274187hgmhcArranging Shoes (IOI19_shoes)C++20
100 / 100
120 ms22336 KiB
#include "shoes.h" #include <bits/stdc++.h> using namespace std; using ll = long long; const int N = 1e5 + 3; set<ll> trunk[N+N]; auto *pos = trunk+N; struct BIT { ll t[2*N+2]; void add(int k, ll x) { for(++k; k<=2*N; k+=k&-k) t[k]+=x; } ll sum(int l, int r) { ll res=0; for(; l; l-=l&-l) res-=t[l]; for(++r; r; r-=r&-r) res+=t[r]; return res; } } ds; ll count_swaps(vector<int> s) { ll n = size(s)/2, cnt=0; for(int i=0; i<2*n; ++i) { pos[s[i]].insert(i); ds.add(i, +1); } for(int i=0; i<2*n; ++i) if(pos[s[i]].contains(i)) { pos[s[i]].erase(i); ll j=*pos[-s[i]].begin(); pos[-s[i]].erase(j); cnt += ds.sum(i+1, j-1) + (s[i]>0); ds.add(i, -1), ds.add(j, -1); } return cnt; }
#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...