Submission #791497

#TimeUsernameProblemLanguageResultExecution timeMemory
791497adaawfFeast (NOI19_feast)C++14
51 / 100
94 ms5752 KiB
#include <iostream> #include <cstring> using namespace std; long long int a[500005], c[500005], f[305][305]; int main() { memset(f, 0, sizeof f); int n, k, flag = 0, h = 0; cin >> n >> k; for (int i = 1; i <= n; i++) { cin >> a[i]; if (a[i] < 0) { flag++; h = i; } c[i] = c[i - 1] + a[i]; } if (flag == 0) { cout << c[n]; return 0; } if (flag == 1) { if (k >= 2) { cout << c[n] - a[h]; } else { cout << max(c[h - 1], max(c[n] - c[h], c[n])); } return 0; } if (k == 1) { long long int mi = 0, ma = 0; for (int i = 1; i <= n; i++) { mi = min(mi, c[i]); ma = max(ma, c[i] - mi); } cout << ma; return 0; } if (n <= 300 && k <= 300) { f[0][0] = 0; for (int i = 1; i <= n; i++) { f[i][0] = 0; for (int j = 1; j <= k; j++) { f[i][j] = f[i - 1][j]; for (int g = i; g >= 1; g--) { f[i][j] = max(f[i][j], f[g - 1][j - 1] + c[i] - c[g - 1]); } } } long long int ma = 0; for (int i = 0; i <= k; i++) { ma = max(ma, f[n][i]); } cout << ma; } }
#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...