Submission #1100527

#TimeUsernameProblemLanguageResultExecution timeMemory
1100527PhuocFeast (NOI19_feast)C++14
0 / 100
7 ms9296 KiB
#include <bits/stdc++.h> using namespace std; template <class T1, class T2> bool maximize (T1 &a, T2 b) { if(a < b) {a = b; return true;} return false; } template <class T1, class T2> bool minimize (T1 &a, T2 b) { if(a > b) {a = b; return true;} return false; } #define ll long long #define el '\n' #define fi first #define se second #define MASK(i) (1LL << (i)) #define BIT(mask, i) (((mask) >> (i)) & 1) const int oo = (int)1e9 + 7; const ll INF = (ll)1e18 + 7LL; const int N = 555; int n, k; ll a[N]; void init (void) { cin >> n >> k; for (int i = 1; i <= n; i++) cin >> a[i]; } long long pre[N], cost[N][N], f[N][N]; void solve (void) { for (int i = 1; i <= n; i++) pre[i] = pre[i - 1] + a[i]; for (int i = 1; i <= n; i++) { for (int j = i; j <= n; j++) { long long mx_sum = -INF; long long minPre = pre[i - 1]; for (int k = i; k <= j; k++){ maximize(mx_sum, pre[k] - minPre); minimize(minPre, pre[k]); } cost[i][j] = mx_sum; // cout << i << ' ' << j << ' ' << cost[i][j] << el; } } memset(f, -0x3f, sizeof f); f[0][0] = 0; for (int i = 1; i <= n; i++) { for (int t = 1; t <= k; t++) { for (int j = 0; j < i; j++) { maximize(f[i][t], f[j][t - 1] + cost[j + 1][i]); } } } cout << f[n][k] << el; } int main (void) { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); // freopen ("test.inp", "r", stdin); // freopen ("test.out", "w", stdout); init(); solve(); 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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...