제출 #1152421

#제출 시각아이디문제언어결과실행 시간메모리
1152421arkanefuryBigger segments (IZhO19_segments)C++20
0 / 100
1 ms328 KiB
#include <bits/stdc++.h> #define pb push_back using namespace std; #define F first #define sz size() #define S second #define in insert #define lb lower_bound #define int long long #define all(v) v.begin(), v.end() #define FOR(x, n, m, d) for(int x = n; x <= m; x += d) #define FORR(x, n, m, d) for(int x = n; x >= m; x -= d) #define nikita ios_base::sync_with_stdio(0), cin.tie(0); const int N = 3000+5; int n,m,k,tt,ans,sum=0,l, r, x, y, cnt, block = 448, res; int a[N], b[N], c[N], dp[N][N], pref[N]; void solve(){ cin >> n; FOR(i, 1, n, 1)cin >> a[i], pref[i] = pref[i-1] + a[i]; FOR(i, 1, n, 1){ FOR(j, 1, i, 1) dp[i][j] = 1e18; } FOR(i, 1,n,1)dp[i][1] = pref[i]; FOR(i, 1, n-1, 1){ FOR(j, 1, i, 1){ if(dp[i][j] == 1e18)continue; l = i+1; while(pref[l] - pref[i] < dp[i][j] && l <= n)l ++; dp[l][j+1] = min(dp[l][j+1], pref[l] - pref[i]); } } FORR(i, n,1, 1){ if(dp[n][i] != 1e18){ cout << i; return; } } cout << 1; } signed main() { nikita tt = 1; if(!tt)cin >> tt; FOR(i, 1, tt, 1){ solve(); } }
#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...