Submission #265559

#TimeUsernameProblemLanguageResultExecution timeMemory
265559easruiRemittance (JOI19_remittance)C++14
0 / 100
1 ms384 KiB
#include <bits/stdc++.h>
#define va first
#define vb second
#define all(x) (x).begin(), (x).end()
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
typedef pair<pii,int> ppi;
typedef pair<int,pii> pip;

const int MN = 2e5+5;
const int MOD = 1e9+7;
const int INF = 1e9;

ll A[MN],B[MN],C[MN],k[30];

void impos()
{
	cout << "No";
	exit(0);
}

int main()
{
	#ifdef L0TUS
    freopen("C:\\Users\\SKYPC364\\Documents\\Coding\\BOJ\\input.txt", "r", stdin);
    freopen("C:\\Users\\SKYPC364\\Documents\\Coding\\BOJ\\output.txt", "w", stdout);
	#endif
	
    ios_base::sync_with_stdio(0),cin.tie(0);

    int N;
    cin >> N;

    for(int i=0; i<N; i++) cin >> A[i] >> B[i];

    k[0] = 1;
    for(int i=1; i<=N; i++){
    	k[i] = k[i-1]*2;
    }

    for(int i=N-1; i>=0; i--){
    	C[N-1] += (A[i]-B[i])*k[i+1];
    }
    if(C[N-1]%(k[N]-1)) impos();
    C[N-1]/=(k[N]-1);
    if(C[N-1]<0||C[N-1]%2) impos();

    for(int i=0; i<N-1; i++){
    	C[i] = A[i]-B[i]+C[(i+N-1)%N]/2;
    	if(C[i]<0||C[i]%2) impos();
    }

    /*for(int i=0; i<N; i++){
    	ll x = min(C[i]/2,A[i]/2)*2;
    	A[i] -= x;
    	A[(i+1)%N] += x/2;
    	C[i] -= x;
    }

    for(int i=0; i<N; i++){
    	ll x = min(C[i]/2,A[i]/2)*2;
    	A[i] -= x;
    	A[(i+1)%N] += x/2;
    	C[i] -= x;
    }

    for(int i=0; i<N; i++){
    	ll x = min(C[i]/2,A[i]/2)*2;
    	A[i] -= x;
    	A[(i+1)%N] += x/2;
    	C[i] -= x;
    }*/

    //for(int i=0; i<N; i++) if(A[i]!=B[i]) impos();
    cout << "Yes";
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...