#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);
for (int i=0;i<N;i++) cin >> a[i];
vector<long long> seg; // суммы готовых сегментов
long long last = 0; // сумма предыдущего сегмента (для первого = 0)
long long current = 0; // накапливаемая сумма текущего кандидата
for (int i = 0; i < N; ++i) {
current += a[i];
if (current >= last) {
seg.push_back(current);
last = current;
current = 0;
}
}
// если остался хвост — присоединим к последнему сегменту
if (current > 0) {
if (seg.empty()) {
// должно быть не пусто, но на всякий случай
seg.push_back(current);
} else {
seg.back() += current;
}
}
// теперь убедимся, что последовательность сумм не убывает:
// если есть нарушение (последняя < предыдущей), то объединяем последние два и проверяем снова
while (seg.size() >= 2) {
int m = seg.size();
if (seg[m-1] < seg[m-2]) {
seg[m-2] += seg[m-1];
seg.pop_back();
} else break;
}
cout << seg.size() << '\n';
return 0;
}
| # | 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... |