Submission #1284490

#TimeUsernameProblemLanguageResultExecution timeMemory
1284490am_aadvik송금 (JOI19_remittance)C++20
15 / 100
1 ms580 KiB
#include <iostream> #include<vector> #include<algorithm> #include<math.h> #define int long long using namespace std; bool p(int x, int n, vector<int> a, vector<int> b, vector<int>& c, vector<int> oa) { a[n - 1] -= 2 * x, a[0] += x, c[n - 1] = 2 * x; for (int i = n - 2; i >= 0; --i) { a[i] -= (2 * (b[i + 1] - a[i + 1])), c[i] = (2 * (b[i + 1] - a[i + 1])); if (abs(a[i]) >= pow(10l, 16ll)) return 0; } if (a[0] > b[0]) return 1; if (a[0] < b[0]) return 0; if (*(min_element(c.begin(), c.end())) < 0) return 1; for (int i = 0; i < n; ++i) { if (oa[i] >= c[i]) { cout << "Yes"; exit(0); } oa[(i + 1) % n] += (min(oa[i], c[i]) / 2); oa[i] -= ((min(oa[i], c[i]) / 2) * 2); } if (oa[0] >= c[0]) { cout << "Yes"; exit(0); } return 0; } int32_t main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int n; cin >> n; vector<int> a(n), b(n), c(n, 0); for (int i = 0; i < n; ++i) cin >> a[i] >> b[i]; int s = 0, e = 1e15; while (s <= e) { int x = (s + e) / 2; if (p(x, n, a, b, c, a)) s = x + 1; else e = x - 1; } cout << "No"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...