Cod sursa(job #482787)

Utilizator MarioYCMario Ynocente Castro MarioYC Data 5 septembrie 2010 09:33:13
Problema Subsecventa de suma maxima Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.5 kb
#include <cstdio>

using namespace std;

int main(){
	freopen("ssm.in","r",stdin);
	freopen("ssm.out","w",stdout);
	
	int N;
	scanf("%d",&N);
	
	int a[N];
	for(int i = 0;i<N;++i) scanf("%d",&a[i]);
	
	int ans = a[0],s = 0,n = 1,best = a[0],s2 = 0,n2 = 1;
	
	for(int i = 1;i<N;++i){
		if(best<0){
			best = a[i];
			s2 = i;
			n2 = 1;
		}else{
			best += a[i];
			++n2;
		}
		
		if(best>ans || (best==ans && n2<n)){
			ans = best;
			s = s2;
			n = n2;
		}
	}
	
	printf("%d %d %d\n",ans,s+1,s+n);
	
	return 0;
}