#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];
bitset<2*MAXN> bits,t;
void add(int x){
	while(bits[x]==1){
		bits[x]=0; x++;
	}
	bits[x]=1;
}
void rem(int x){
	while(bits[x]==0){
		bits[x]=1; x++;
		if(x>2000000){
			cout<<"No\n";
			exit(0);
		}
	}
	bits[x]=0;
}
bool tryrem(){
	for(int i=max(2*n,n+50);i>=0;i--){
		if(bits[i]==t[i])continue;
		if(t[i]>bits[i])return false;
		break;
	}
	for(int i=max(2*n,n+50);i>=0;i--){
		if(t[i]==1)rem(i);
	}
	return true;
}
int main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>n;
	power[0]=1;
	for(int i=1;i<=n;i++){
		cin>>a[i]>>b[i];
		s[i]=a[i]-b[i];
		s[n+i]=s[i];
		power[i]=power[i-1]*2;
	}
	long long res=0;
	for(int i=1;i<=1;i++){
		for(int f=i;f<=n+i-1;f++){
			res+=power[f-i]*s[f];
		}
		
		c[i-1]=res/(power[n]-1);
	}
	for(int i=1;i<=n;i++){
		if(s[i]<=0)continue;
		for(int f=30;f>=0;f--){
			if((1<<f)&s[i])add(f+i-1);
		}
	}
	for(int i=1;i<=n;i++){
		if(s[i]>=0)continue;
		s[i]=-s[i];
		for(int f=30;f>=0;f--){
			if((1<<f)&s[i])rem(f+i-1);
		}
	}
	if(bits.count()==0){
		c[n]=0;
	}else{
		for(int i=0;i<n;i++)t[i]=1;
		t=(t<<50);
		
		for(int i=50;i>=0;i--){
			c[n]*=2;
			if(tryrem())c[n]++;
			t=(t>>1);
		}
		if(bits.count()>0){
			cout<<"No\n";
			return 0;
		}
		assert(c[0]==c[n]);
	}
	for(int i=n-1;i>=1;i--){
		c[i]=b[i+1]-a[i+1]+2*c[i+1];
	}
	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<=20;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... |