Submission #1159107

#TimeUsernameProblemLanguageResultExecution timeMemory
1159107alexander707070Remittance (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...