제출 #1271641

#제출 시각아이디문제언어결과실행 시간메모리
1271641david_g611Arranging Shoes (IOI19_shoes)C++20
100 / 100
76 ms22132 KiB
#include <bits/stdc++.h> #include "shoes.h" using namespace std; unordered_map<int, vector<int>> ap; const int NMAX=2e5; struct Fenwick { int a[NMAX+11]; Fenwick() { for(auto &x:a)x=0; } void update(int poz, int val) { for(; poz<=NMAX+10; poz+=poz&(-poz)) a[poz]+=val; } int query(int poz) { int suma=0; for(; poz>0; poz-=poz&(-poz)) suma+=a[poz]; return suma; } }aib; long long count_swaps(vector<int> S) { int n=S.size(); int v[n+1]; bool folosit[n+1]; for(auto &x:folosit)x=false; for(int i=0; i<n; i++) { v[i+1]=S[i]; ap[v[i+1]].push_back(i+1); } for(auto [x, y]:ap) reverse(ap[x].begin(), ap[x].end());///ca se le iau cu pop back long long ans=0; for(int i=1; i<=n; i++) { if(!folosit[i]) { int nxt = ap[-v[i]].back(); ap[-v[i]].pop_back(); folosit[nxt]=true; ans+=(nxt+aib.query(nxt))-(i+aib.query(i))-1; if(v[i]>0)ans++; aib.update(i, 1); aib.update(nxt, -1); ap[v[i]].pop_back(); } } 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...