Submission #1159107

#TimeUsernameProblemLanguageResultExecution timeMemory
1159107alexander707070송금 (JOI19_remittance)C++20
55 / 100
1069 ms39564 KiB
#include<bits/stdc++.h> #define MAXN 1000007 using namespace std; int n; long long a[MAXN],b[MAXN],s[2*MAXN],c[MAXN]; long long power[MAXN]; int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]>>b[i]; s[i]=a[i]-b[i]; s[n+i]=s[i]; } power[0]=1; for(int i=1;i<=n;i++)power[i]=power[i-1]*2; for(int i=1;i<=n;i++){ long long res=0; for(int f=i;f<=n+i-1;f++){ res+=power[f-i]*s[f]; } c[i-1]=res/(power[n]-1); } c[n]=c[0]; for(int i=1;i<=n;i++){ if(c[i]<0 or a[i]+c[i-1]-2*c[i]!=b[i]){ cout<<"No\n"; return 0; } } for(int t=1;t<=200;t++){ for(int i=1;i<=n;i++){ int give=min(a[i]/2,c[i]); a[i]-=2*give; c[i]-=give; if(i<n)a[i+1]+=give; else a[1]+=give; } } for(int i=1;i<=n;i++){ if(c[i]!=0){ cout<<"No\n"; return 0; } } cout<<"Yes\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...