Pagini recente » Cod sursa (job #2163926) | Cod sursa (job #1559400) | Cod sursa (job #500415) | Cod sursa (job #2801902) | Cod sursa (job #573912)
Cod sursa(job #573912)
#include<iostream>
#include<fstream>
#define inf 1000000
using namespace std;
int a[4][10005],b[4][10005],v[10005],n,k,sol;
void solve()
{
int c1,c2,i,q,val;
c1=0;
c2=1;
a[c1][1]=v[1];
for (i=1;i<=n;i++)
{
a[c1][i]=a[c1][i-1]+v[i];
if (a[c1][i]<v[i])
a[c1][i]=v[i];
}
c1=(c1^c2)^(c2=c1);
for (q=2;q<=k;q++)
{
a[c1][q]=a[c2][q-1]+v[q];
val=max(a[c2][q],a[c2][q-1]);
for (i=q+1;i<=n;i++)
{
a[c1][i]=a[c1][i-1]+v[i];
if (a[c1][i]<val+v[i])
a[c1][i]=val+v[i];
val=max(val,a[c2][i]);
}
c1=(c1^c2)^(c2=c1);
}
sol=0;
for (i=k;i<=n;i++)
sol=max(sol,a[c2][i]);
a[c1][1]=v[1];
for (i=2;i<=n;i++)
a[c1][i]=a[c1][i-1]+v[i];
c1=(c2^c1)^(c2=c1);
if (k<n){
for (q=2;q<=k+1;q++)
{
a[c1][q]=a[c2][q-1]+v[q];
val=max(a[c2][q],a[c2][q-1]);
for(i=q+1;i<=n;i++)
{
a[c1][i]=a[c1][i-1]+v[i];
if (a[c1][i]<val+v[i])
a[c1][i]=val+v[i];
val=max(val,a[c2][i]);
}
c1=(c1^c2)^(c2=c1);
}
sol=max(sol,a[c2][n]);}
}
void citire()
{
int i;
ifstream f("ferma.in");
f>>n>>k;
for (int i=1;i<=n;i++)
f>>v[i];
f.close();
}
void afisare()
{
ofstream g("ferma.out");
g<<sol;
g.close();
}
int main()
{
citire();
solve();
afisare();
return 0;
}