Submission #161400

#TimeUsernameProblemLanguageResultExecution timeMemory
161400nvmdavaRemittance (JOI19_remittance)C++17
100 / 100
874 ms52212 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define ff first #define ss second mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); #define N 1000002 #define INF 0x3f3f3f3f3f3f3f3f #define MOD 1000000007LL ll d[N], a[N], b[N], c[N]; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin>>n; for(int i = 1; i <= n; i++){ cin>>a[i]>>b[i]; c[i] = a[i] - b[i]; } for(int j = 0; j < 40; j++){ for(int i = 1; i <= n; i++){ if(c[i] % 2 != 0){ d[i - 1] += 1LL << j; } } d[n] = d[0]; for(int i = 1; i <= n; i++){ if(d[i] & (1LL << j)){ c[i] -= 2; if(i == n) c[1]++; else ++c[i + 1]; } } for(int i = 1; i <= n; i++){ c[i] /= 2; } } for(int j = 1; j <= 3; j++){ for(int i = 1; i <= n; i++){ if(d[i] && a[i] > 1){ ll k = min(d[i], a[i] / 2); d[i] -= k; a[i] -= k * 2; if(i != n) a[i + 1] += k; else a[1] += k; } } } for(int i = 1; i <= n; i++){ if(a[i] != b[i]){ cout<<"No"; return 0; } } cout<<"Yes"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...