Cod sursa(job #228448)

Utilizator razyelxrazyelx razyelx Data 7 decembrie 2008 11:51:15
Problema Secventa 2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <stdio.h>
long long x[50001],s[50001],min[50001],mm,mm2 = mm = -1250000001,a,b,b1,a1,i,j,n,k;
int main(){

    FILE*f=fopen("secv2.in","r");
    FILE*g=fopen("secv2.out","w");

    fscanf(f,"%lld %lld %lld",&n,&k,&x[1]);

    s[1] = x[1];
    min[1] = 1;

    for(i=2;i<=n;i++){

	fscanf(f,"%lld",&x[i]);
	s[i] = s[i-1] + x[i];

	if(s[i]<s[min[i-1]]) min[i] = i;
	else min[i] = min[i-1];

    }

    for(i=k;i<=n;i++){
	 j = min[i-1];

	 while(!(i-j < k) && j>0)j--;
	 if(s[i] - s[j] > mm && i-j >= k && j>=0){
		a = j+1;
		b = i;
		mm=s[i] - s[j];
	 }
	 a1 = a;
	 b1 = b;
	 mm2= mm;
	 j = min[i-1];

	 while(i-j < k && j>0)j--;
	 if(s[i] - s[j] > mm && i-j >= k && j>=0){
		a = j+1;
		b = i;
		mm=s[i] - s[j];
	 }
	 if(mm2<mm){a1=a;b1=b;mm2=mm;}

   }

   fprintf(g,"%lld %lld %lld \n",a1,b1,mm2);

   return 0;
}