Submission #755543

#TimeUsernameProblemLanguageResultExecution timeMemory
755543jmyszka2007송금 (JOI19_remittance)C++17
55 / 100
197 ms32332 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
constexpr int LIM = 1e6;
ll a[LIM + 10];
ll b[LIM + 10];
ll x[LIM + 10];
int main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	ll n;
	cin >> n;
	ll ans = 0;
	ll sumb = 0, suma = 0;
	for(int i = 1; i <= n; i++) {
		cin >> a[i] >> b[i];
		ans += (b[i] - a[i]) * (1ll << (i - 1));
		sumb += b[i];
		suma += a[i];
	}
	if(ans % ((1ll << n) - 1) || sumb > suma || (suma > 0 && !sumb)) {
		cout << "No\n";
	}
	else {
		bool czy = 1;
		ans /= -((1ll << n) - 1);
		x[n] = ans;
		for(int i = 1; i < n; i++) {
			int pop = i - 1;
			if(!pop) {
				pop = n;
			}
			if((a[i] + x[pop] - b[i]) & 1) {
				czy = 0;
				break;
			}
			else {
				x[i] = (a[i] + x[pop] - b[i]) / 2;
			}		
		}
		ll sumx = 0;
		for(int i = 1; i <= n; i++) {
			sumx += x[i];
			if(x[i] < 0) {
				czy = 0;
			}
		}
		if(czy) {
			cout << "Yes\n";
		}
		else {
			cout << "No\n";
		}
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...