Cod sursa(job #50452)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 7 aprilie 2007 19:00:29
Problema Secventa 2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include<fstream.h>
#include<limits.h>

long v[60000];
long n, k;
long smax=LONG_MIN;

void citire()
{
  ifstream in("secv2.in");
  in>>n>>k;
  for (long i=1; i<=n; i++)
    in>>v[i];
  in.close();
}

void suma()
{
  long i, j, s, p;
  for (i=1; i<=k; i++) s+=v[i];
  if (s>smax){ smax=s; j=i-1;}

  for (i=k+1; i<=n; i++)
    {
      s+=v[i];
      if (s>smax)
	{
	  smax=s;
	  j=i;
	}
    }
  long sm=LONG_MIN;
  s=0;
  for (i=j; i>=j-k+1;i--)
    s+=v[i];
  if (s>sm) { sm=s; p=i+1;}

  for (i=j-k+1; i>=1; i--)
    {
      s+=v[i];
      if (s>sm){ sm=s; p=i;}
    }
  s=0;
  for (i=p; i<=j; i++)
    s+=v[i];
  ofstream out("secv2.out");
  out<<p<<" "<<j<<" "<<s;
  out.close();

}



/*void parcurs()
{
  long i, j, p;
  long l, lmax, s;
  for (i=1; i<n; i++)
    {
      s=0;
      l=0;
      for (j=i; j<=n; j++)
	{
	  s+=v[j];
	  l++;
	  if (l>=k)
	    {
	      if (s>smax)
		{
		  smax=s;
		  lmax=l;
		  p=j-l+1;
		}
	    }
	 }
    }
  ofstream out("secv2.out");
  out<<p<<" "<<p+lmax-1<<" "<<smax;
  out.close();
} */


int main()
{
  citire();
  suma();
  return 0;
}