제출 #883659

#제출 시각아이디문제언어결과실행 시간메모리
883659OAleksaBigger segments (IZhO19_segments)C++14
0 / 100
1 ms2396 KiB
#include<bits/stdc++.h> using namespace std; #define f first #define s second #define int long long const int maxn = 5010; const int inf = 1e18; int n, a[maxn], dp[maxn][maxn], p[maxn]; signed main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int tt = 1; //cin >> tt; while (tt--) { cin >> n; for (int i = 1;i <= n;i++) cin >> a[i]; for (int i = 1;i <= n;i++) p[i] = p[i - 1] + a[i]; for (int i = 0;i <= n;i++) { for (int j = 0;j <= n;j++) dp[i][j] = inf; } dp[0][0] = 0; for (int i = 1;i <= n;i++) { for (int j = 1;j <= n;j++) { int l = 0, r = i - 1, id = inf; while (l <= r) { int mid = (l + r) / 2; int o = p[i] - p[mid]; if (o >= dp[mid][j - 1] || dp[mid][j - 1] == inf) { if (dp[mid][j - 1] != inf) id = o; l = mid + 1; } else r = mid - 1; } dp[i][j] = id; } } int ans = 0; for (int i = 1;i <= n;i++) { if (dp[n][i] != inf) ans = i; } cout << ans; } 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...