Submission #1277710

#TimeUsernameProblemLanguageResultExecution timeMemory
1277710PieArmyCoin Collecting (JOI19_ho_t4)C++20
0 / 100
1 ms580 KiB
#include<bits/stdc++.h> typedef long long ll; #define pb push_back #define fr first #define sc second #define endl '\n' using namespace std; int n; int arr[100023][2]; ll ans=0; int main(){ ios_base::sync_with_stdio(23^23);cin.tie(NULL); cin>>n; for(int i=1;i<=2*n;i++){ pair<int,int>p;cin>>p.fr>>p.sc; if(p.fr<1){ ans+=1-p.fr; p.fr=1; } if(p.fr>n){ ans+=p.fr-n; p.fr=n; } if(p.sc<1){ ans+=1-p.sc; p.sc=1; } if(p.sc>2){ ans+=p.sc-2; p.sc=2; } arr[p.fr][p.sc-1]++; } vector<int>need[2]; for(int i=1;i<=n;i++){ if(arr[i][0]+arr[i][1]<2){ if(!arr[i][0]){ need[0].pb(i); } if(!arr[i][1]){ need[1].pb(i); } } else{ if(!arr[i][0]){ ans++; arr[i][1]--; arr[i][0]++; } else if(!arr[i][1]){ ans++; arr[i][0]--; arr[i][1]++; } while(arr[i][0]>1&&need[0].size()){ ans+=i-need[0].back(); need[0].pop_back(); arr[i][0]--; } while(arr[i][1]>1&&need[1].size()){ ans+=i-need[1].back(); need[1].pop_back(); arr[i][1]--; } while(arr[i][0]>1&&need[1].size()){ ans+=i-need[1].back()+1; need[1].pop_back(); arr[i][0]--; } while(arr[i][1]>1&&need[0].size()){ ans+=i-need[0].back()+1; need[0].pop_back(); arr[i][1]--; } ans+=arr[i][0]-1; arr[i+1][0]+=arr[i][0]-1; ans+=arr[i][1]-1; arr[i+1][1]+=arr[i][1]-1; } } cout<<ans<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...