Cod sursa(job #36059)

Utilizator swift90Ionut Bogdanescu swift90 Data 22 martie 2007 21:45:32
Problema Secventa 2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<stdio.h>
#include<stdlib.h>
int nr[50001];
int s1[50001],s2[50001],max,s;
int main(){
	FILE*in=fopen("secv.in","r");
	FILE*out=fopen("secv.out","w");
	int n,k,i,p1,p2,aux;
	fscanf(in,"%d %d",&n,&k);
	for(i=0;i<n;i++){
		fscanf(in,"%d",&nr[i]);
		if(i==0)
			s1[i]=nr[i];
		else
			s1[i]=s1[i-1]+nr[i];
	}
	if(n==k){
		fprintf(out,"1 %d %d",n,s1[n-1]);
		return 0;
	}
	
	s2[n-1]=nr[n-1];
	for(i=n-2;i>=0;i--)
		s2[i]=s2[i+1]+nr[i];
	
	max=-30000;
	for(i=0;i<n;i++){
		if(s1[i]>max){
			max=s1[i];
			p2=i;
		}
	}
	
	max=-30000;
	for(i=n-1;i>-1;i--){
		if((abs(p2-i)>=k)&&(s2[i]>max)){
			max=s2[i];
			p1=i;
		}
	}
	if(p1>p2){
		aux=p1;
		p1=p2;
		p2=aux;
	}
	
	for(i=p1;i<=p2;i++)
		s=s+nr[i];
	
	fprintf(out,"%d %d %d\n",p1+1,p2+1,s);
	
	
	
	return 0;
}