#include<bits/stdc++.h>
using namespace std;
#define int long long
#define ii pair<int,int>
#define fir first
#define sec second
signed main(){
int n; cin>>n;
int a[n+1],b[n+1];
bool dlm[n+1]; memset(dlm,false,sizeof dlm);
queue<int>qu;
for(int q=1;q<=n;q++){
cin>>a[q]>>b[q];
if(a[q]-b[q]>=2){
dlm[q]=true;
qu.push(q);
}
}
while(qu.size()){
int idx=qu.front(); qu.pop();
int nxt=idx+1; dlm[idx]=false;
if(nxt==n+1)nxt=1;
int brp=(a[idx]-b[idx])/2;
if(brp<=0)continue;
a[idx]-=2*brp;
a[nxt]+=brp;
if(dlm[nxt]==false){
qu.push(nxt); dlm[nxt]=true;
}
}
bool sama=true;
for(int q=1;q<=n;q++){
sama&=(a[q]==b[q]);
}
if(sama){
cout<<"Yes"<<endl; return 0;
}
bool satu=true,non=false;
for(int q=1;q<=n;q++){
satu&=(a[q]==b[q]+1);
if(a[q]>1)non=true;
}
if(satu && non){
cout<<"Yes"<<endl;
}
else{
cout<<"No"<<endl;
}
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |