Nu aveti permisiuni pentru a descarca fisierul grader_test1.ok
Cod sursa(job #1464678)
Utilizator | Ana Kapros akapros | Data | 24 iulie 2015 11:26:17 |
---|---|---|---|
Problema | Ferma | Scor | 40 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.07 kb |
#include <cstdio>
#include <algorithm>
#include <cstring>
#define inf -2000000002
#define Nmax 10002
#define Kmax 1002
using namespace std;
int n, i, j, k, v[Nmax], sum;
int a[2][Kmax], b[2][Kmax];
int main()
{
int sol = 0, sum, p, q, j;
freopen("ferma.in", "r", stdin);
freopen("ferma.out", "w", stdout);
scanf("%d %d", &n, &k);
for (i = 1; i <= n; ++ i)
scanf("%d", &v[i]);
++ k;
for (j = 1; j <= k; ++ j)
a[0][j] = inf,
b[0][j] = inf;
for (i = 1; i <= n; ++ i)
for (j = 1; j <= k; ++ j)
{
if (i < j)
{
a[i % 2][j] = inf;
b[i % 2][j] = inf;
continue;
}
a[i % 2][j] = max(max(a[(i - 1) % 2][j], a[(i - 1) % 2][j - 1]), b[(i - 1) % 2][j - 1]) + v[i];
b[i % 2][j] = max(a[(i - 1) % 2][j], b[(i - 1) % 2][j]);
if (j == k - 1)
sol = max(max(a[i % 2][j], b[i % 2][j]), sol);
}
sol = max(a[n % 2][k], sol);
printf("%d", sol);
return 0;
}