제출 #1320883

#제출 시각아이디문제언어결과실행 시간메모리
1320883phamtienhoangFeast (NOI19_feast)C++20
0 / 100
574 ms63492 KiB
#include <iostream> #include <vector> #include <map> #include <string> #include <algorithm> #include <cassert> #include <cstring> #include <stack> #include <set> #include <cmath> #include <queue> #include <iomanip> using namespace std; const int N = 2005; // f[i][j][k] là tổng lớn nhất khi ta xét vị trí i đang ở group j và group j đó nếu = 0 group đang đóng và ngược lại; long long f[N][N][2]; int n , m; int a[N]; int main(){ cin >> n >> m; for(int i = 1; i <= n ;i++){ cin >> a[i]; } const long long NEG = -(1LL << 60); for(int i = 0 ; i <= n ; i++){ for(int j = 0 ; j <= m ; j++){ f[i][j][0] = f[i][j][1] = NEG; } } f[0][0][0] = 0; for(int i = 0 ; i < n ; i++){ for(int j = 0 ; j <= m ; j++ ){ if(f[i][j][0] > NEG){ f[i + 1][j][0] = max(f[i + 1][j][0] , f[i][j][0]); if(j < m) f[i + 1][j + 1][1] = max(f[i + 1][j + 1][1] , f[i][j][0] + a[i + 1]); } if(f[i][j][1] > NEG){ f[i + 1][j][0] = max(f[i + 1][j][0] , f[i][j][1]); f[i + 1][j][1] = max(f[i + 1][j][1] , f[i][j][1] + a[i + 1]); } } } cout << max(f[n][m][0], f[n][m][1]); 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...