#define _CRT_SECURE_NO_WARNINGS
//old enemey
#include <iostream>
#include<vector>
#include<algorithm>
#include<math.h>
#define int long long
using namespace std;
bool p(int x, int n, vector<int> a, vector<int> b, vector<int>& c, vector<int> oa) {
	a[n - 1] -= 2ll * x, a[0] += x, c[n - 1] = 2ll * x;
	for (int i = n - 2; i >= 0; --i) {
		a[i] -= (2 * (b[i + 1] - a[i + 1])), c[i] = (2 * (b[i + 1] - a[i + 1]));
		if (c[i] < 0) return 1;
		if (abs(a[i]) >= pow(10l, 16ll)) return 0;
	}
	if (a[0] > b[0]) return 1; if (a[0] < b[0]) return 0;
	if (*(min_element(c.begin(), c.end())) < 0) return 1;
	for (int i = 0; i < (20 * n); ++i) {
		if (oa[(i % n)] >= c[(i % n)]) { cout << "Yes"; exit(0); }
		oa[(i + 1) % n] += (min(oa[(i % n)], c[(i % n)]) / 2);
		oa[(i % n)] -= ((min(oa[(i % n)], c[(i % n)]) / 2) * 2);
	}
	if (oa[0] >= c[0]) { cout << "Yes"; exit(0); }
	for (int i = 0; i < n; ++i) if (oa[i] != b[i]) return 0;
	cout << "Yes"; exit(0);
}
int32_t main() {
	ios_base::sync_with_stdio(false); cin.tie(NULL);
	//freopen("input.txt", "r", stdin);
	int n; cin >> n;
	vector<int> a(n), b(n), c(n, 0);
	for (int i = 0; i < n; ++i)
		cin >> a[i] >> b[i];
	int s = 0, e = 1e15;
	while (s <= e) {
		int x = (s + e) / 2;
		if (p(x, n, a, b, c, a)) s = x + 1;
		else e = x - 1;
	}
	cout << "No";
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |