제출 #958783

#제출 시각아이디문제언어결과실행 시간메모리
958783raphaelp송금 (JOI19_remittance)C++14
100 / 100
603 ms36660 KiB
#include <bits/stdc++.h>
using namespace std;
int main()
{
    long long N;
    cin >> N;
    vector<long long> A(N), B(N);
    for (long long i = 0; i < N; i++)
    {
        cin >> A[i] >> B[i];
    }
    for (long long i = 0; i < N - 1; i++)
    {
        if (A[i] > B[i])
        {
            long long amount = A[i] - B[i] + ((A[i] - B[i]) % 2);
            if (amount > A[i])
                amount -= 2;
            A[i] -= amount;
            A[i + 1] += amount / 2;
        }
    }
    long long buff = N - 1;
    int last = N - 2;
    while (A[buff] > B[buff])
    {
        if (buff == last)
            break;
        if (A[buff] > B[buff])
        {
            long long amount = A[buff] - B[buff] + ((A[buff] - B[buff]) % 2);
            if (amount > A[buff])
                amount -= 2;
            A[buff] -= amount;
            A[(buff + 1) % N] += amount / 2;
            if (amount)
                last = buff;
        }
        buff = (buff + 1) % N;
    }
    long long done = 1;
    for (long long i = 0; i < N; i++)
        if (A[i] != B[i])
            done = 0;
    if (done)
        cout << "Yes";
    else
        cout << "No";
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...