Cod sursa(job #1126942)

Utilizator Kzsolty96SAPIENTIA OSZTIAN DANIEL KUCSVAN Kzsolty96 Data 27 februarie 2014 10:32:36
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<stdio.h>
#include<vector>
#include<set>

using namespace std;

vector <int> v;
vector <int> Best;
int N;

int Max(int a,int b)
{
	if(a>b)
		return a;
	else
		return b;
}

void vkeres(int max,int i)
{
	while(max-v[i]!=0 && i>=0)
	{
		max-=v[i];
		i--;
	}
	printf("%d ",i+1);
}

int keres()
{
	int i,imax=0,max=Best[0];
	for(i=1;i<N;i++)
		if(Best[i]>max)
		{
			max=Best[i];
			imax=i;
		}
	printf("%d ",max);
	vkeres(max,imax);
	printf("%d",imax+1);
}

void megold()
{
	int i;
	Best.push_back(v[0]);
	for(i=1;i<N;i++)
	{
		Best.push_back(Max(Best[i-1]+v[i],v[i]));
	}
	keres();
}


int main()
{
	freopen("ssm.in","r",stdin);
	freopen("ssm.out","w",stdout);
	scanf("%d",&N);
	int x;
	for(int i=0;i<N;i++)
	{
		scanf("%d",&x);
		v.push_back(x);
	}
	megold();
	return 0;
}