Submission #681483

#TimeUsernameProblemLanguageResultExecution timeMemory
681483boykutDivide and conquer (IZhO14_divide)C++14
100 / 100
34 ms6732 KiB
#include <bits/stdc++.h>

using namespace std;

const int N = 100100;
int x[N], g[N], e[N];
long long pg[N], pe[N], prefmin[N];

int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  
  int n;
  cin >> n;
  prefmin[0] = LLONG_MAX;
  for (int i = 1; i <= n; i++) {
    cin >> x[i] >> g[i] >> e[i];
    pg[i] = pg[i-1] + g[i];
    pe[i] = pe[i-1] + e[i];
    prefmin[i] = min(prefmin[i-1], pe[i-1]-x[i]);
  }
  
  long long answer = 0;
  for (int r = 1; r <= n; r++) {
    int A = 1, B = r;
    while (A < B) {
      int l = (A + B) >> 1;
      if (prefmin[l] <= pe[r]-x[r])
        B = l;
      else
        A = l + 1;
    }
    if (prefmin[B] <= pe[r]-x[r])
      answer = max(answer, pg[r]-pg[B-1]);
  }
  
  cout << answer;
  
  return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...