#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... |