Submission #1092050

#TimeUsernameProblemLanguageResultExecution timeMemory
1092050juicyBigger segments (IZhO19_segments)C++17
100 / 100
51 ms13140 KiB
#include <bits/stdc++.h>

using namespace std;

#ifdef LOCAL
#include "debug.h"
#else
#define debug(...) 42
#endif

const int N = 5e5 + 5;

int n;
int res[N], lst[N];
long long a[N];

int main() {
  ios::sync_with_stdio(false); cin.tie(nullptr);

  cin >> n;
  for (int i = 1; i <= n; ++i) {
    cin >> a[i];
  }
  partial_sum(a, a + n + 1, a);
  for (int i = 1; i <= n; ++i) {
    long long x = a[i] - a[lst[i]];
    res[i] = res[lst[i]] + 1;
    int l = i + 1, r = n, p = -1;
    while (l <= r) {
      int m = (l + r) / 2;
      if (a[m] - a[i] >= x) {
        p = m;
        r = m - 1;
      } else {
        l = m + 1;
      }
    }
    if (~p) {
      lst[p] = max(lst[p], i);
    }
    lst[i + 1] = max(lst[i + 1], lst[i]);
  }
  cout << res[n];
  return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...