제출 #893697

#제출 시각아이디문제언어결과실행 시간메모리
893697Alcabel송금 (JOI19_remittance)C++17
55 / 100
169 ms51708 KiB
#include <bits/stdc++.h> using namespace std; void solve() { int n; cin >> n; vector<int> a(n), b(n); for (int i = 0; i < n; ++i) { cin >> a[i] >> b[i]; } long long denom = (1ll << n) - 1; vector<long long> x(n); for (int i = 0; i < n; ++i) { for (int j = i; j >= 0; --j) { x[i] = 2 * x[i] + b[j] - a[j]; } for (int j = n - 1; j > i; --j) { x[i] = 2 * x[i] + b[j] - a[j]; } x[i] = -x[i]; if (x[i] < 0 || x[i] % denom != 0) { cout << "No\n"; return; } x[i] /= denom; } bool change = true; while (change) { change = false; for (int i = 0; i < n; ++i) { if (x[i] > 0 && a[i] >= 2) { change = true; long long trans = min(x[i], a[i] * 1ll / 2); x[i] -= trans; a[i] -= 2 * trans; int nxt = i + 1; if (nxt == n) { nxt = 0; } a[nxt] += trans; } } } for (int i = 0; i < n; ++i) { if (x[i] != 0) { cout << "No\n"; return; } } cout << "Yes\n"; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); #ifdef LOCAL freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); int T = 1; cin >> T; while (T--) { solve(); cerr << "-----------\n"; cout << "-----------\n"; } #else int T = 1; // cin >> T; while (T--) { solve(); } #endif return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...