제출 #602089

#제출 시각아이디문제언어결과실행 시간메모리
602089ttamxArranging Shoes (IOI19_shoes)C++14
100 / 100
228 ms274392 KiB
#include "shoes.h" #include<bits/stdc++.h> #define ll long long using namespace std; const int N=2e5+5; int n; ll f[N],ans; queue<int> q[2][N]; 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=abs(s[i-1]); int b=(0?1:s[i-1]<0); if(!q[1-b][a].empty()){ ll tmp=read(i)-read(q[1-b][a].front()-b)-1; ans+=tmp; //printf("move %d from %d to %d, used %d\n",a,i,q[1-b][b].front(),tmp); add(i,-1); add(q[1-b][a].front(),1); q[1-b][a].pop(); }else{ //printf("add %d at %d\n",a,i); q[b][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...