Pagini recente » Diferente pentru planificare/sedinta-20081125 intre reviziile 17 si 18 | Istoria paginii utilizator/andreizaicescu | Monitorul de evaluare | Profil miruna1224 | Cod sursa (job #82764)
Cod sursa(job #82764)
#include<stdio.h>
long v[100000], max, pi, pf, contor, n, k;
int main()
{
freopen("ferma.in","r",stdin);
freopen("ferma.out","w",stdout);
scanf("%ld %ld",&n,&k);
long i, j, sc;
for (i=1; i<=n; i++) scanf("%ld",&v[i]);
while (k--)
{
sc=v[1];
pi=pf=1;
max=v[1];
for (i=2; i<=n ; i++)
{
if (sc<0) {pi=i; sc=0;}
sc+=v[i];
if (sc>max) {max=sc; pf=i;}
}
for (i=1; i<n; i++)
{
if (sc<0) {pi=i; sc=v[i];}
else
{
sc+=v[i];
if (sc>max) {max=sc; pf=i;}
}
}
contor+=max;
if (pi<=pf) for (i=pi; i<=pf; i++) v[i]*=(-1);
else
{
for (i=pi; i<=n; i++) v[i]*=(-1);
for (i=1; i<=pf; i++) v[i]*=(-1);
}
}
printf("%ld",contor);
return 0;
}