#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N; if (!(cin >> N)) return 0;
vector<long long> a(N+1);
long long tot = 0;
for (int i = 1; i <= N; ++i) { cin >> a[i]; tot += a[i]; }
long long prev = 0, cur = 0, rem = tot; // rem = sum of tail not yet processed
int start = 1; // start index of current block
long long ans = 0;
for (int i = 1; i <= N; ++i) {
cur += a[i];
rem -= a[i];
if (cur >= prev) {
if (i < N) {
// leave room for at least one more block (sum >= cur)
while (cur > rem && start <= i) {
prev += a[start];
cur -= a[start];
++start;
}
}
if (cur >= prev) { // still valid to cut
++ans;
prev = cur;
cur = 0;
start = i + 1;
}
}
}
if (ans == 0) ans = 1; // the whole array is one block
cout << ans << '\n';
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |