제출 #602080

#제출 시각아이디문제언어결과실행 시간메모리
602080ttamxArranging Shoes (IOI19_shoes)C++14
50 / 100
328 ms298432 KiB
#include "shoes.h" #include<bits/stdc++.h> #define ll long long using namespace std; const int N=1e5+5; int n; ll f[N],ans; map<int,queue<int>> mp; void add(int i,int v){ while(i<N){ f[i]+=v; i+=i&-i; } } ll read(int i){ ll ret=0; while(i>0){ ret+=f[i]; i-=i&-i; } return ret; } ll count_swaps(std::vector<int> s) { n=s.size(); for(int i=1;i<=n;++i)add(i,1); for(int i=1;i<=n;++i){ int a=s[i-1]; if(!mp[-a].empty()){ ll tmp=read(i)-read(mp[-a].front()-(0?1:a<0))-1; ans+=tmp; //printf("move %d from %d to %d, used %d\n",a,i,mp[-a].front(),tmp); add(i,-1); add(mp[-a].front(),1); mp[-a].pop(); }else{ //printf("add %d at %d\n",a,i); mp[a].emplace(i); } } 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...