This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define all(x) (x).begin(), (x).end()
#define sz(x) (int) (x).size()
using namespace std;
typedef long long lint;
typedef pair<int,lint> ii;
typedef pair<lint,ii> iii;
int arr[500006];
int main(){
ios_base::sync_with_stdio(false); cin.tie(0);
int n; cin >> n;
for(int i = 1;i <= n;i++) cin >> arr[i];
lint prefix = 0;
deque<iii> D;
D.push_back(iii(0,ii(0,0)));
for(int i = 1;i <= n;i++){
prefix += arr[i];
while(sz(D) > 1){
if(D[1].first <= prefix) D.pop_front();
else break;
}
ii res = D[0].second;
int most = res.first + 1;
lint take = prefix - res.second;
if(i == n) cout << most;
while(sz(D) > 0){
iii T = D.back();
if(T.first >= take + prefix) D.pop_back();
else break;
}
D.push_back(iii(take+prefix, ii(most, prefix)));
}
}
# | 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... |