This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <iostream>
#include <fstream>
#include <algorithm>
#include <queue>
#include <iomanip>
#include <map>
#include <string.h>
#include <math.h>
#include <set>
#define MAX_N 1000005
#define f first
#define s second
using namespace std;
typedef pair<int, int> ii;
int A[MAX_N], B[MAX_N];
int N;
void solve() {
cin >> N;
for (int i = 0; i < N; i ++) {
cin >> A[i] >> B[i];
}
int carry;
for (int ii = 0; ii < 100; ii ++) {
for (int i = 0; i < N; i ++) {
if (A[i] > B[i]) {
carry = ((A[i] - B[i]) / 2);
A[i] -= ((A[i] - B[i]) / 2) * 2;
A[(i + 1) % N] += carry;
}
}
}
bool flag = true;
for (int i = 0; i < N; i ++) {
flag = (flag && (A[i] == B[i]));
}
if (flag)
cout << ("Yes") << endl;
else {
bool flag2 = true;
for (int i = 0; i < N; i ++)
flag2 = (flag2 && (A[i] - 1 == B[i]));
for (int i = 0; i < N; i ++) {
if (A[i] > 1)
break;
if (i == N - 1)
flag2 = false;
}
cout << (flag2 ? "Yes" : "No") << endl;
}
return;
}
int main() {
int T;
T = 1;
for (int i = 0; i < T; i ++) {
solve();
}
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... |