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 <bits/stdc++.h>
typedef long long ll;
using namespace std;
const int MAX = 1000007;
ll A[MAX], B[MAX];
int main() {
	ios::sync_with_stdio(0); cin.tie(0);
	ll N;
	cin >> N;
	for (int i = 0; i < N; ++i) {
		ll a, b;
		cin >> a >> b;
		A[i] = b - a;
		B[i] = a;
	}
	if (N <= 30) {
		for (int i = 0; i < N; ++i) {
			if (0 <= A[i]) continue;
			ll init = abs(A[i]), conv = 0;
			while (init) {
				conv -= init % (1LL << N);
				init /= (1LL << N);
			}
			A[i] = conv;
		}
	}
	
	for (int t = 0; t < 3; ++t) {
		for (int i = 0; i < N; ++i) {
			if (A[i] >= 0) continue;
			ll z = abs(A[i]) / 2LL;
			A[i] += z * 2;
			A[(i + 1) % N] -= z;
		}
	}
	bool s1 = 0, s2 = 1;
	for (int i = 0; i < N; ++i) {
		if (B[i] > 1) s1 = 1;
		if (A[i] != -1) s2 = 0;
	}
	if (s1 && s2) {
		cout << "Yes";
		return 0;
	}
	for (int i = 0; i < N; ++i) {
		if (!A[i]) continue;
		cout << "No";
		return 0;
	}
	cout << "Yes";
	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... |