#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |