Submission #404669

#TimeUsernameProblemLanguageResultExecution timeMemory
404669AntekbCoin Collecting (JOI19_ho_t4)C++14
100 / 100
69 ms6444 KiB
#include<bits/stdc++.h> using namespace std; const int N=1e5+5; int tab[N][3], tab2[N]; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n; cin>>n; long long ans=0; for(int i=0; i<2*n; i++){ int x, y; cin>>x>>y; if(x>n){ ans+=x-n; x=n; } if(x<1){ ans+=1-x; x=1; } if(y<1){ ans+=1-y; y=1; } if(y>2){ ans+=y-2; y=2; } //cout<<ans<<" "<<x<<" "<<y<<"\n"; tab[x][y]++; } /*for(int i=1; i<=n; i++){ cin>>tab[i][1]; } for(int i=1; i<=n; i++){ cin>>tab[i][2]; }*/ long long ile=0, wsk1=1, wsk2=1; for(int i=1; i<=n; i++)tab2[i]=tab[i][1]+tab[i][2]; for(int i=1; i<=n; i++){ ile+=tab2[i]; ans+=abs(ile-2*i); while(wsk1<i && tab[i][1]>1){ if(tab[wsk1][1]==0){ tab[i][1]--; tab[wsk1][1]++; } wsk1++; } while(wsk2<i && tab[i][2]>1){ if(tab[wsk2][2]==0){ tab[i][2]--; tab[wsk2][2]++; } wsk2++; } while(wsk1<=i && tab[i][2]>1){ if(tab[wsk1][1]==0){ tab[i][2]--; ans++; tab[wsk1][1]++; } wsk1++; } while(wsk2<=i && tab[i][1]>1){ if(tab[wsk2][2]==0){ tab[i][1]--; ans++; tab[wsk2][2]++; } wsk2++; } if(tab[i][1]!=0){ tab[i+1][1]+=tab[i][1]-1; tab[i][1]=1; } if(tab[i][2]!=0){ tab[i+1][2]+=tab[i][2]-1; tab[i][2]=1; } /*for(int j=1; j<=n; j++){ cout<<tab[j][1]<<" "; } cout<<"\n"; for(int j=1; j<=n; j++){ cout<<tab[j][2]<<" "; } cout<<"\n"; cout<<wsk1<<" "<<wsk2<<"\n";*/ } cout<<ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...