Submission #231857

#TimeUsernameProblemLanguageResultExecution timeMemory
231857jiahng송금 (JOI19_remittance)C++14
100 / 100
862 ms75656 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; #define int ll int N; ld X[maxn],Y[maxn]; ld A[maxn],B[maxn]; bool equal(ld a,ld b){ if (abs(a - b) < 0.000001) return 1; else return 0; } int32_t 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 || !equal(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){ B[i] += k; k /= 2; } //int num = 0; FOR(i,0,N-1){ A[i] = B[(i - 1 + N) % N] / 2; if (!equal(round(B[i]),B[i]) || (ll)round(B[i]) % 2 != 0 || B[i] < 0 || !equal(round(A[i]),A[i])){ cout<<"No"; return 0; } B[i] = round(B[i]); A[i] = round(A[i]); } bool done = 0; while (!done){ done = 1; FOR(i,0,N-1){ ll send = (ll(min(X[i],B[i])) / 2) * 2; if (send > 0) done = 0; B[i] -= send; X[i] -= send; X[(i+1) % N] += send / 2; } } FOR(i,0,N-1){ if (X[i] != Y[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...