Cod sursa(job #82764)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 9 septembrie 2007 00:02:48
Problema Ferma Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#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;
}