제출 #797258

#제출 시각아이디문제언어결과실행 시간메모리
797258fatemetmhrRemittance (JOI19_remittance)C++17
0 / 100
1083 ms340 KiB
// Be name khoda // #include <bits/stdc++.h> #define all(x) x.begin(), x.end() #define pb push_back #define fi first #define se second #define mp make_pair typedef long long ll; using namespace std; const int maxn5 = 1e6 + 10; const ll inf = 1e18; bool mark[maxn5]; ll a[maxn5], b[maxn5]; queue <int> q; int n; bool found = false; void solve(){ bool re = true; for(int i = 0; i < n; i++) re &= (a[i] == b[i]); if(re){ found = true; return; } for(int i = 0; i < n; i++) for(int x = 2; x <= a[i]; x+= 2){ a[i] -= x; a[(i + 1)%n] += x / 2; solve(); if(found) return; a[i] += x; a[(i + 1)%n] -= x / 2; } } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cin >> n; ll sum = 0; for(int i = 0; i < n; i++){ cin >> a[i] >> b[i]; sum += a[i]; } solve(); cout << (found ? "Yes" : "No") << endl; return 0; while(sum > 0){ bool re = true; for(int i = 0; i < n; i++){ if(a[i] < b[i]){ int j = (i - 1 + n) % n; sum -= b[i] - a[i]; a[j] -= 2 * (b[i] - a[i]); a[i] = b[i]; re = false; } else if(a[i] > b[i]){ int j = (i + 1) % n; ll w = (a[i] - b[i]) / 2 + ((a[i] - b[i]) % 2); a[j] += w; a[i] -= 2 * w; sum -= w; re = false; } } if(re) return cout << "Yes" << endl, 0; } cout << "No" << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...