# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
211614 | m3r8 | Remittance (JOI19_remittance) | C++14 | 5 ms | 384 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <stdio.h>
#define N 1000100
#define ll long long
ll A[N];
ll B[N];
int cnt[N];
int main(void){
int n;
int nn = 1;
scanf("%d",&n);
for(int i = 0;i<n;i++){
scanf("%lld %lld",&A[i],&B[i]);
if(B[i] != 0)nn = 0;
};
int pos = !nn;
if(pos){
for(int j = 0;j<2;j++){
for(int i = 0;i<n;i++){
if(A[i] > B[i]){
ll tmp = A[i]-B[i];
if(tmp % 2)tmp--;
tmp /= 2;
A[(i+1)%n] += tmp;
A[i] -= tmp * 2;
};
};
};
for(int i = 0;i<n;i++){
ll diff = A[i]-B[i];
pos = diff >= 0;
if(!pos)break;
for(int j = 0;j<32;j++){
if(diff & (1ull << j)){
cnt[(i+j)%n] ^= 1;
};
};
};
};
if(pos){
int st = cnt[0];
for(int i = 0;i<n;i++){
if(cnt[i] != st){
pos = 0;
break;
};
};
};
if(pos)printf("Yes\n");
else printf("No\n");
return 0;
};
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |