제출 #796627

#제출 시각아이디문제언어결과실행 시간메모리
796627vjudge1Arranging Shoes (IOI19_shoes)C++17
100 / 100
256 ms26776 KiB
#include "shoes.h" #include "bits/stdc++.h" using namespace std; #define ll long long #define vi vector<int> vector<ll> tr; void init(int n){ tr.assign(n,1); for(int i=0;i<n;i++){ int j=i|(i+1); if(j<n) tr[j]+=tr[i]; } } void upd(int i){ for(;i<(int)tr.size();i|=i+1) tr[i]--; } ll get(int i){ ll res=0; for(;i>=0;i=(i&(i+1))-1) res+=tr[i]; return res; } ll get(int i, int j){ return get(j-1)-get(i); } long long count_swaps(vi s) { int n=s.size(); map<int,priority_queue<int,vi,greater<int>>> ma; for(int i=0;i<n;i++) ma[s[i]].push(i); init(n); ll res=0; bool taken[n]={}; for(int i=0;i<n;i++){ if(taken[i]) continue; int j=ma[-s[i]].top(); ma[-s[i]].pop(); ma[s[i]].pop(); res+=get(i,j)+(s[i]>0); upd(j); taken[i]=taken[j]=true; } return res; }
#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...