#include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0; i<(n); i++)
#define rrep(i,n) for(int i=(n)-1; i>=0; i--)
#define rng(i,l,r) for(int i=(l); i<(r); i++)
#define all(x) x.begin(),x.end()
#define fi first
#define se second
using ll=long long;
int main(){
ios::sync_with_stdio(false);cin.tie(nullptr);
int N;cin>>N;
vector<pair<ll,ll>> money(N);
rep(i,N)cin>>money[i].fi>>money[i].se;
rep(send,100){
bool ok=true;
vector<ll> sends(N);
sends[0]=send;
rng(i,1,N){
if((money[i].fi-money[i].se+sends[i-1])<0){
ok=false;
}
if((money[i].fi-money[i].se+sends[i-1])%2==1){
ok=false;
}
sends[i]=(money[i].fi-money[i].se+sends[i-1])/2;
}
rep(i,N){
if(money[i].fi+sends[(i+N-1)%N]-sends[i]*2!=money[i].se){
ok=false;
}
}
rep(i,70){
rep(j,N){
ll mx=min(money[j].fi/2,sends[j]);
sends[j]-=mx;
money[j].fi-=mx*2;
money[(j+1)%N].fi+=mx;
}
}
bool flg=true;
rep(i,N){
if(sends[i]!=0)flg=false;
}
if(!flg)ok=false;
if(ok){
cout<<"Yes\n";
return 0;
}
}cout<<"No\n";
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |