#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef double ld;
typedef complex<ld> point;
void debug_out(){cerr << endl;}
template<typename Head, typename... Tail>
void debug_out(Head H, Tail... T){
cerr << H << ' ';
debug_out(T...);
}
#define debug(...) cerr << "(" << #__VA_ARGS__ << "): ", debug_out(__VA_ARGS__)
#define F first
#define S second
#define all(x) x.begin(), x.end()
#define MP(x, y) make_pair(x, y)
const int maxn = 1e6 + 10;
ll n, a[maxn], b[maxn];
vector<int> q;
bool mark[maxn];
int main(){
ios_base::sync_with_stdio(false); cin.tie(0);
cin >> n;
for (int i = 1; i <= n; i++){
cin >> a[i] >> b[i];
if (a[i] > b[i]+1){
q.push_back(i);
mark[i] = true;
}
}
while(!q.empty()){
int v = q.back();
mark[v] = false;
q.pop_back();
ll tmp = (a[v]-b[v]) / 2;
int nxt = v+1;
if (nxt == n+1) nxt = 1;
a[nxt] += tmp;
a[v] -= 2 * tmp;
if (!mark[nxt] && a[nxt] > b[nxt]+1){
q.push_back(nxt);
mark[nxt] = true;
}
}
bool ans = true;
for (int i = 1; i <= n; i++){
assert(a[i] <= b[i]+1);
if (a[i] != b[i]) ans = false;
}
bool majid = true;
for (int i = 1; i <= n; i++){
if (a[i] != b[i]+1) majid = false;
}
bool asghar = false;
for (int i = 1; i <= n; i++){
if (a[i] != 1) asghar = true;
}
cout << ((ans || (majid && asghar))? "Yes\n": "No\n");
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
0 ms |
340 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
0 ms |
340 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
19 ms |
2264 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
0 ms |
340 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |