#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define FORI(i, n) for(ll i = 0; i < n; i++)
#define FOR(i, n) for(ll i = 1; i <= n; i++)
typedef vector < ll > vl;
typedef set < ll > setl;
#define ff first
#define ss second
#define all(v) v.begin(), v.end()
#define pll pair<ll, ll>
#define db double
#define nll cout << "\n"
#define nl "\n"
#define sync ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
ll poww(ll a, ll b){
ll res = 1;
while(b){
if(b & 1)res *= a;
a *= a;
b >>= 1;
}
return res;
}
const ll mod = 998244353;
const int sz = 5e5 + 5 ;
const long long imax = LLONG_MAX;
ll n, m, k, res, q, x, y;
ll a[sz], b[sz];
ll pref[sz];
void solve(){
cin >> n;
FOR(i, n)cin >> a[i], pref[i] = pref[i - 1] + a[i];
vl dp(n + 1), par(n + 1);
FOR(i, n){
par[i] = max(par[i], par[i - 1]);
dp[i] = dp[par[i]] + 1;
ll x = lower_bound(pref + 1, pref + 1 + n, pref[i] * 2 - pref[par[i]]) - pref;
par[x] = i;
}
cout << dp[n] << nl;
}
//IOI rice hub
signed main(){
// freopen("input.txt","r",stdin);a
// freopen("output.txt","w",stdout);
sync;
ll t = 1;
// cin >> t;
while(t--){
solve();
}
}
# | 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... |