Submission #970043

#TimeUsernameProblemLanguageResultExecution timeMemory
970043efedmrlrRemittance (JOI19_remittance)C++17
100 / 100
366 ms36348 KiB
#include <bits/stdc++.h>

#define int long long int
#define pb push_back
#define MP make_pair
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define REP(i, n) for(int i = 0; (i) < (n); (i)++)
#define ld long double

using namespace std;

void fastio() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
}

const int N = 1e6 + 5;
const int INF = 1e9 + 500;
const int LGN = 45;
int n;
vector<int> a, b;
void solve() {
    cin >> n;
    a.resize(n + 1); b.resize(n + 1);
    bool f3 = 0;
    for(int i = 0; i < n; i++) {
        cin >> a[i] >> b[i];
        if(b[i]) f3 = 1;
    } 
    for(int k = 0; k < LGN; k++) {
        bool f = 0;
        for(int i = 0; i < n; i++) {
            // cout << "i:" << i << " v:" << a[i] << " " << b[i] << "\n";
            int j = (i + 1) % n;
            if(b[i] >= a[i]) continue;
            f = 1;
            int nxt = (a[i] - b[i]) / 2;
            a[i] -= nxt * 2;
            a[j] += nxt;
        }
        if(!f) break; 
    }
    bool f = 1;
    for(int i = 0; i < n; i++) {
        if(a[i] != b[i]) {
            f = 0;
            break;
        }
        
    }
    if(!f) {
    bool f2 = 1;
        for(int i = 1; i < n; i++) {
            if(a[i] - b[i] != a[i - 1] - b[i - 1]) {
                f2 = 0;
            }
        }
        if(a[0] - b[0] < 0) f2 = 0;
        if(f2 && f3) {
            f = 1;
        }

    }
    if(f) cout << "Yes\n";
    else cout << "No\n";
}

signed main() {
    fastio();
    solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...