Pagini recente » Cod sursa (job #510865) | Cod sursa (job #704481) | Cod sursa (job #2583893) | Cod sursa (job #3256745) | Cod sursa (job #573555)
Cod sursa(job #573555)
#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;
c1=0;c2=1;
a[c1][1]=v[1]; b[c1][1]=-inf;
for (i=2;i<=n;i++)
{
a[c1][i]=a[c1][i-1]+v[i];
if (a[c1][i]<v[i])
a[c1][i]=v[i];
b[c1][i]=b[c1][i-1];
if (b[c1][i]<a[c1][i-1])
b[c1][i]=a[c1][i-1];
}
c1=(c1^c2)^(c2=c1);
for (q=2;q<=k;q++)
{
a[c1][2*q-1]=a[c2][2*q-3]+v[2*q-1];
b[c1][2*q-1]=a[c1][2*q-1];
for (i=2*q;i<=n;i++)
{
a[c1][i]=a[c1][i-1]+v[i];
if (a[c1][i]<b[c2][i-1]+v[i])
a[c1][i]=b[c2][i-1]+v[i];
b[c1][i]=b[c1][i-1];
if (b[c1][i]<a[c1][i-1])
b[c1][i]=a[c1][i-1];
}
c1=(c1^c2)^(c2=c1);
}
sol=max(sol,max(a[c2][n],b[c2][n]));
/*c1=0;c2=1;
a[c1][0]=0;
for (i=1;i<=n;i++)
{
a[c1][i]=a[c1][i-1]+v[i];
b[c1][i]=a[c1][i-1];
}
b[c1][q]=-inf;
c1=(c1^c2)^(c2=c1);
for (q=2;q<=k+1;q++)
{
a[c1][2*q-1]=a[c2][2*q-3]+v[2*q-1];
b[c1][2*q-1]=a[c1][2*q-1];
for (i=2*q;i<=n;i++)
{
a[c1][i]=a[c1][i-1]+v[i];
if (a[c1][i]<b[c2][i-1]+v[i])
a[c1][i]=b[c2][i-1]+v[i];
b[c1][i]=b[c1][i-1];
if (b[c1][i]<a[c1][i-1])
b[c1][i]=a[c1][i-1];
}
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;
}