Submission #1181640

#TimeUsernameProblemLanguageResultExecution timeMemory
1181640nuutsnoyntonBigger segments (IZhO19_segments)C++20
27 / 100
1599 ms70984 KiB
#include<bits/stdc++.h>

using namespace std;
using ll = long long;
ll dp[3003][3003], a[3002], pre[3002];

ll Sum(ll x, ll y) {
	return pre[y] - pre[x - 1];
}

int main() {
	ll n, m, s, sum, r, x, y, i, j, ans, t, cnt;

	cin >> n;
	
	
	pre[0] = 0;
	for (i = 1; i <= n; i ++) {
		cin >> a[i];
		pre[i] = pre[i - 1] + a[i];
	}
	for (i = 1; i <= n; i ++) for (j = 1; j<= n; j ++) dp[i][j] = 1e18;
	s =a[1];
	ans = 1;
	dp[1][1] = a[1];
	for (i = 2; i <= n; i ++) {
		s += a[i];
		dp[i][1] = s;
		for ( r = 1; r < i; r ++) {
			for (j = 1; j < n; j ++) {
				if ( dp[r][j] <= Sum(r + 1, i)) {
					dp[i][j + 1] = Sum(r + 1, i);
				}
			}
		}
	}
	
	ans =0 ;
	for (i = 1; i <= n; i ++) {
		for (j = 1; j <= n; j ++) {
			if ( dp[i][j] != 1e18) ans = max(ans, j);
		}
	}
	cout << ans << endl;
}
#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...