제출 #1135904

#제출 시각아이디문제언어결과실행 시간메모리
1135904nikolashamiArranging Shoes (IOI19_shoes)C++20
10 / 100
5 ms9800 KiB
#include<bits/stdc++.h> using namespace std; using ll=long long; const int N=1e5+2; set<int>ps[N],ng[N]; int b[N<<1]; void reset(int32_t n){ for(int i=0;i<=n;++i){ if(i<N)ps[i].clear(); if(i<N)ng[i].clear(); b[i]=0; } } ll count_swaps(vector<int>a){ int n=a.size(); reset(n); for(int i=0;i<n;++i){ if(a[i]>0)ps[a[i]].insert(i); else ng[-a[i]].insert(i); } ll ans=0; for(int i=0,j;i<n;++i){ if(b[i])continue; if(a[i]>0){ j=*ng[a[i]].begin(); ng[a[i]].erase(ng[a[i]].begin()); ps[a[i]].erase(ps[a[i]].find(i)); ans+=j-i; } if(a[i]<0){ j=*ps[-a[i]].begin(); ps[-a[i]].erase(ps[-a[i]].begin()); ng[-a[i]].erase(ng[-a[i]].find(i)); ans+=j-i-1; } b[i]=b[j]=1; } 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...