제출 #1047360

#제출 시각아이디문제언어결과실행 시간메모리
1047360vjudge1Arranging Shoes (IOI19_shoes)C++17
10 / 100
1 ms348 KiB
#include<bits/stdc++.h> #include<shoes.h> using namespace std; const int mxN = 1e5 + 7; int tree[mxN]; int n; void upd(int l,int r) { l++; for( ;n > l;l += l & -l) tree[l]++; for( ;n > r;r += r & -r) tree[r]--; } int que(int pos) { pos--; int res = 0; for( ;pos > 0;pos -= pos & -pos) res += tree[pos]; return res; } long long count_swaps(vector<int> a) { n = a.size(); int mark[n]; memset(mark,0,sizeof(mark)); vector<int> sz[2 * n]; long long ans = 0; for(int i = 0;n > i;i++) { sz[n + a[i]].push_back(i); } for(int i = 0;n > i;i++) { if(mark[i]) continue; int kayd = -a[i] + n; auto l = upper_bound(sz[kayd].begin(), sz[kayd].end(), i); if(l == sz[kayd].end()) continue; ans += que(i) + (*l - i); if(a[*l] > 0) ans--; upd(i,*l); mark[*l]++; } 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...