Submission #503249

#TimeUsernameProblemLanguageResultExecution timeMemory
503249blueDivide and conquer (IZhO14_divide)C++17
100 / 100
39 ms8864 KiB
#include <iostream> #include <vector> #include <algorithm> using namespace std; using ll = long long; const ll INF = 1'000'000'000'000'000'000LL; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int N; cin >> N; ll x[1+N], g[1+N], d[1+N]; d[0] = 0; g[0] = 0; for(int i = 1; i <= N; i++) { cin >> x[i] >> g[i] >> d[i]; d[i] += d[i-1]; g[i] += g[i-1]; } vector<pair<ll, ll> > A, B; A.push_back({-INF, -INF}); B.push_back({-INF, -INF}); for(int i = 1; i <= N; i++) { A.push_back({d[i] - x[i], g[i]}); B.push_back({d[i-1] - x[i], - g[i-1]}); // cerr << i << " : " << d[i] - x[i] << "," << g[i] << " " << d[i-1]-x[i] << "," << -g[i-1] << '\n'; } ll ans = 0; sort(A.begin(), A.end()); sort(B.begin(), B.end()); ll sa = -INF, sb = -INF; int a = 0, b = 0; for(a = 1; a <= N; a++) { // sa = max(sa, A[a].second); while(b+1 <= N && B[b+1].first <= A[a].first) { b++; sb = max(sb, B[b].second); } ans = max(ans, A[a].second+sb); } cout << ans << '\n'; }

Compilation message (stderr)

divide.cpp: In function 'int main()':
divide.cpp:45:8: warning: unused variable 'sa' [-Wunused-variable]
   45 |     ll sa = -INF, sb = -INF;
      |        ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...