제출 #433456

#제출 시각아이디문제언어결과실행 시간메모리
433456MilosMilutinovic금 캐기 (IZhO14_divide)C++14
17 / 100
1 ms332 KiB
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int N; cin >> N; vector<long long> X(N), G(N), D(N); for (int i = 0; i < N; i++) cin >> X[i] >> G[i] >> D[i]; vector<long long> pref_gold(N); for (int i = 0; i < N; i++) pref_gold[i] = G[i] + (i > 0 ? pref_gold[i - 1] : 0); vector<long long> pref_energy(N); for (int i = 0; i < N; i++) pref_energy[i] = D[i] + (i > 0 ? pref_energy[i - 1] : 0); auto Check = [&](long long val) -> bool { for (int i = 0; i < N; i++) { int bot = i, top = N - 1, pos = N; while (bot <= top) { int mid = (bot + top) / 2; if (pref_gold[mid] - (i == 0 ? 0 : pref_gold[i - 1]) >= val) pos = mid, top = mid - 1; else bot = mid + 1; } if (pos == N) continue; if (pref_energy[pos] - (i == 0 ? 0 : pref_energy[i - 1]) >= X[pos] - X[i]) return true; } return false; }; long long bot = 0, top = pref_gold[N - 1], ans = 0; while (bot <= top) { long long mid = bot + top >> 1; if (Check(mid)) ans = mid, bot = mid + 1; else top = mid - 1; } if (Check(ans + 1)) ans++; cout << ans << "\n"; }

컴파일 시 표준 에러 (stderr) 메시지

divide.cpp: In function 'int main()':
divide.cpp:46:29: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   46 |         long long mid = bot + top >> 1;
      |                         ~~~~^~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...