Cod sursa(job #409732)

Utilizator andreirRoti Andrei andreir Data 3 martie 2010 20:32:20
Problema Subsecventa de suma maxima Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<stdio.h>
#include<algorithm>
#include<vector>
#define minf -1999999999
#define N_max 6000001
using namespace std;

vector<int>v;
int sum[N_max];

int main()
{
	int n,i,x,y,bestsum=minf,min=0,best;
	freopen("ssm.in","r",stdin);
	freopen("ssm.out","w",stdout);
	//citeste n si vectorul
	v.push_back(bestsum);
	scanf("%d",&n);	for(i=1;i<=n;i++){	scanf("%d",&x);		v.push_back(x);}
	
	//rezolva
		
	for(i=1;i<=n;++i)
		sum[i]=sum[i-1]+v[i];
	x=0;y=0; //x-start ,y-final
	
	for(i=1;i<=n;++i)
	{
		best=sum[i]-min; 
		if(min>sum[i])	{	min=sum[i];		x=i;}
		if(bestsum<best){	bestsum=best;	y=i;}
		else if(bestsum==best && y<i-x) y=i;
	}
	
	printf("%d %d %d\n",bestsum,x+1,y);
	
	return 0;
}