Submission #1136844

#TimeUsernameProblemLanguageResultExecution timeMemory
1136844onbert송금 (JOI19_remittance)C++20
0 / 100
1 ms528 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int maxn = 1e6 + 5, INF = 1e16;
int n;
int a[maxn], b[maxn];

signed main() {
    cin >> n;
    for (int i=0;i<n;i++) cin >> a[i] >> b[i];
    for (int i=1;i<n;i++) {
        int give = max((a[i] - b[i] + 1) / 2, (int)0);
        a[i] -= give * 2, a[(i+1)%n] += give;
        int take = b[i] - a[i];
        if (take > 0 && (i > 50 || (1<<i) > INF / take)) {cout << "No\n"; return 0;}
        a[0] -= take * (1<<i);
        if (a[0] < -INF) {cout << "No\n"; return 0;}
    }
    if (a[0] == b[0]) 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...