Submission #1294912

#TimeUsernameProblemLanguageResultExecution timeMemory
1294912azamuraiBigger segments (IZhO19_segments)C++20
0 / 100
1 ms560 KiB
#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 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...