Cod sursa(job #6547)

Utilizator piroslPiros Lucian pirosl Data 20 ianuarie 2007 01:49:06
Problema Secventa 2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <stdio.h>

int main(void)
{
	FILE *fin, *fout;
	int n, k;	
	int sum[50001];
	int max = -999999999;
	int min = 999999999;
	int pozmin = -1;
	int start = -1;
	int end = -1;
	int i;
	int number;

	fin = fopen("secv2.in", "r");
	fscanf(fin, "%d %d", &n, &k);
	for(i=0;i<n;i++) 
	{
		fscanf(fin, "%d ", &number);
		
		sum[i] = (i==0)?number:(sum[i-1]+number);
		if(sum[i]<min)
		{
			min = sum[i];
			pozmin = i;
		}

		if(i+1>=k)
		{
			if(start==-1)
			{
				max = sum[i];
				start = 1;
				end = i+1;
			}
			if(i-pozmin>=k)
			{
				if(sum[i]-sum[pozmin]>max) 
				{
					max = sum[i]-sum[pozmin];
					start = pozmin+2;
					end = i+1;
				}
			}
			if(sum[i]>max)
			{
				max = sum[i];
				start = 1;
				end = i+1;
			}
		}
	}
	fclose(fin);
	
	fout = fopen("secv2.out", "w");
	fprintf(fout, "%d %d %d\n", start, end, max);
	fclose(fout);
	return 0;
}