Submission #238264

#TimeUsernameProblemLanguageResultExecution timeMemory
238264egekabasRemittance (JOI19_remittance)C++14
0 / 100
5 ms384 KiB
#include <bits/stdc++.h> #define ff first #define ss second #define pb push_back #define mp make_pair using namespace std; typedef long long ll; typedef unsigned long long ull; typedef long double ld; typedef pair<ll, ll> pll; typedef pair<ull, ull> pull; typedef pair<ll, ll> pii; typedef pair<ld, ld> pld; ll n; ll a[1000009], b[1000009]; ll in[1000009], out[1000009]; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); //freopen("in.txt", "r", stdin); //freopen("out.txt", "w", stdout); cin >> n; for(ll i = 0; i < n; ++i) cin >> a[i] >> b[i]; for(ll i = 0; i < n; ++i){ ll dif = a[i]-b[i]; if(dif > 0){ out[i] = (dif+1)/2; in[i] = dif%2; } else in[i] = -dif; } ll times = 50; while(times--){ for(ll i = 0; i < n; ++i){ while(in[i] > out[(i-1+n)%n] && out[i] > in[(i+1)%n]){ in[i] -= 2; out[i] -= 1; } ll bef = (i-1+n)%n; if(out[bef] < in[i]){ in[bef] += (in[i]-out[bef])*2; out[bef] = in[i]; } else if(out[bef] > in[i]){ if((out[bef]-in[i])%2){ ++out[bef]; in[bef] += 2; } out[i] += (out[bef]-in[i])/2; in[i] = out[bef]; } } for(ll i = n-1; i >= 0; --i){ while(in[i] > out[(i-1+n)%n] && out[i] > in[(i+1)%n]){ in[i] -= 2; out[i] -= 1; } ll bef = (i-1+n)%n; if(out[bef] < in[i]){ in[bef] += (in[i]-out[bef])*2; out[bef] = in[i]; } else if(out[bef] > in[i]){ if((out[bef]-in[i])%2){ ++out[bef]; in[bef] += 2; } out[i] += (out[bef]-in[i])/2; in[i] = out[bef]; } } } for(ll i = 0; i < n; ++i){ ll bef = (i-1+n)%n; if(in[i] != out[bef]){ cout << "No\n"; return 0; } } cout << "Yes\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...