Pagini recente » Cod sursa (job #2579760) | Cod sursa (job #1442812) | Cod sursa (job #2937617) | Cod sursa (job #2285190) | Cod sursa (job #3302745)
// Ilie "The-Winner" Dumitru
// Dumnezeu sa o ierte
#include<bits/stdc++.h>
#define sz(x) ((int)(x).size())
#define all(x) (x).begin(), (x).end()
using ll=long long;
constexpr int NMAX=10005, KMAX=1024;
constexpr ll MOD=1000000007;
int N, K;
int v[NMAX];
int dp[KMAX][2];
void runDp()
{
int i, j;
for(j=0;j<N;++j)
for(i=K;i>0;--i)
{
dp[i][1]=std::max(dp[i][1], dp[i-1][0])+v[j];
dp[i][0]=std::max(dp[i][0], dp[i][1]);
}
}
int main()
{
FILE* f=fopen("ferma.in", "r"), *g=fopen("ferma.out", "w");
int i;
fscanf(f, "%d%d", &N, &K);
for(i=0;i<N;++i)
fscanf(f, "%d", v+i);
runDp();
int ans=std::max(dp[K][0], dp[K][1]);
for(i=0;i<=K;++i)
dp[i][0]=dp[i][1]=0;
dp[1][1]=MOD;
++K;
runDp();
ans=std::max((ll)ans, dp[K][1]-MOD);
fprintf(g, "%d\n", ans);
fclose(f);
fclose(g);
return 0;
}