Submission #1321749

#TimeUsernameProblemLanguageResultExecution timeMemory
1321749wangzhiyi33Remittance (JOI19_remittance)C++20
100 / 100
641 ms25316 KiB
#include<bits/stdc++.h> using namespace std; #define int long long #define ii pair<int,int> #define fir first #define sec second signed main(){ int n; cin>>n; int a[n+1],b[n+1]; bool dlm[n+1]; memset(dlm,false,sizeof dlm); queue<int>qu; for(int q=1;q<=n;q++){ cin>>a[q]>>b[q]; if(a[q]-b[q]>=2){ dlm[q]=true; qu.push(q); } } while(qu.size()){ int idx=qu.front(); qu.pop(); int nxt=idx+1; dlm[idx]=false; if(nxt==n+1)nxt=1; int brp=(a[idx]-b[idx])/2; if(brp<=0)continue; a[idx]-=2*brp; a[nxt]+=brp; if(dlm[nxt]==false){ qu.push(nxt); dlm[nxt]=true; } } bool sama=true; for(int q=1;q<=n;q++){ sama&=(a[q]==b[q]); } if(sama){ cout<<"Yes"<<endl; return 0; } bool satu=true,non=false; for(int q=1;q<=n;q++){ satu&=(a[q]==b[q]+1); if(a[q]>1)non=true; } if(satu && non){ cout<<"Yes"<<endl; } else{ cout<<"No"<<endl; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...