Cod sursa(job #9193)

Utilizator stef2nStefan Istrate stef2n Data 26 ianuarie 2007 23:22:15
Problema Secventa 2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <stdio.h>

#define infile "secv2.in"
#define outfile "secv2.out"
#define NMAX 50005
#define INF 1250000005

FILE *fin,*fout;
int n,k;
short int x[NMAX];
int sumamax=-INF,pozstart,pozend;
int suma[NMAX];

void citire()
  {
   fin=fopen(infile,"r");
   fscanf(fin,"%d %d",&n,&k);
   for(int i=0;i<n;i++)
      fscanf(fin,"%d",&x[i]);
   fclose(fin);
  }

void solve()
  {
   int i;
   int min=0,min_pozstart=0;

   suma[0]=x[0];
   for(i=1;i<n;i++)
      suma[i]=suma[i-1]+x[i];

   for(i=k-1;i<n;i++)
      {
       if(suma[i]-min>sumamax)
         {
          sumamax=suma[i]-min;
          pozstart=min_pozstart;
          pozend=i;
         }
       if(min>suma[i-k+1])
         {
          min=suma[i-k+1];
          min_pozstart=i-k+2;
         }
      }
  }


int main()
{
citire();
solve();
fout=fopen(outfile,"w");
fprintf(fout,"%d %d %d\n",pozstart+1,pozend+1,sumamax);
fclose(fout);
return 0;
}