제출 #501446

#제출 시각아이디문제언어결과실행 시간메모리
501446MazaalaiBigger segments (IZhO19_segments)C++17
27 / 100
1593 ms70940 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; using VI = vector <int>; using VLL = vector <ll>; int n, m; const int N = 3e3 + 5; const ll INF = 1e18; ll ans = 1; ll nums[N], dp[N][N]; signed main () { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); // freopen("in.txt", "r", stdin); // freopen("out.txt", "w", stdout); cin >> n; for (int i = 1; i <= n; i++) cin >> nums[i]; for (int i = 0; i <= n; i++) for (int j = 0; j <= n; j++) dp[i][j] = INF; ll sum = 0; for (int i = 1; i <= n; i++) { sum += nums[i]; dp[1][i] = sum; } for (int i = 1; i < n; i++) { for (int j = 1; j <= n; j++) { if (dp[i][j] == INF) continue; ll curSum = 0; for (int k = j+1; k <= n; k++) { curSum += nums[k]; if (curSum >= dp[i][j]) dp[i+1][k] = min(dp[i+1][k], curSum); } } if (dp[i+1][n] != INF) ans = i+1; } // for (int i = 1; i <= n; i++) // for (int j = 1; j <= n; j++) cout << (dp[i][j] == INF ? -1 : dp[i][j]) << " \n"[j==n]; cout << ans << '\n'; }
#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...