Submission #231840

#TimeUsernameProblemLanguageResultExecution timeMemory
231840jiahngRemittance (JOI19_remittance)C++14
0 / 100
5 ms512 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<ll,ll> pi; typedef vector <ll> vi; typedef vector <pi> vpi; #define f first #define s second #define FOR(i,s,e) for(ll i=s;i<=ll(e);++i) #define DEC(i,s,e) for(ll i=s;i>=ll(e);--i) #define pb push_back #define all(x) (x).begin(), (x).end() #define lbd(x, y) lower_bound(all(x), y) #define ubd(x, y) upper_bound(all(x), y) #define aFOR(i,x) for (auto i: x) #define mem(x,i) memset(x,i,sizeof x) #define fast ios_base::sync_with_stdio(false),cin.tie(0) #define maxn 1000001 typedef long double ld; int N; ld X[maxn],Y[maxn]; ld A[maxn],B[maxn]; int main(){ fast; cin>>N; FOR(i,0,N-1) cin>>X[i]>>Y[i]; int fi=-1; FOR(i,0,N-1){ if (X[i] - Y[i] >= 0){ fi = i; break; } } if (fi == -1){ cout<<"No"; return 0; } rotate(X,X+fi,X+N); rotate(Y,Y+fi,Y+N); B[0] = X[0] - Y[0]; A[1] = (X[0] - Y[0]) / 2; FOR(i,1,N - 1){ B[i] = X[i] - Y[i] + A[i]; A[(i + 1) % N] = B[i]/2; } ld z = - B[0] + A[0] - Y[0] + X[0]; if (z == 0){ FOR(i,0,N-1){ if (ll(B[i]) % 2 != 0 || ll(B[i]) != B[i] || B[i] < 0){ cout<<"No"; return 0; } } cout<<"Yes"; return 0; } ld a = 1; FOR(i,1,N) a /= 2; ld k = 1/z - (a * (1/z)); k = 1/k; FOR(i,0,N-1){ if (ll(B[i] + k) != B[i] + k || ll(B[i] + k) % 2 != 0 || B[i] + k < 0){ cout<<"No"; return 0; } k /= 2; } cout<<"Yes"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...