Cod sursa(job #880142)

Utilizator pulseOvidiu Giorgi pulse Data 16 februarie 2013 13:16:05
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include<fstream>
using namespace std;
ifstream f("ssm.in");
ofstream g("ssm.out");
int i,n,best[6000001],v[6000001],m,k,j;
int maxim(int a,int b)
{
	if(a>=b)
		return a;
	else
		return b;
}
int main()
{
	f>>n;
	for(i=1;i<=n;i++)
		f>>v[i];

	best[1]=v[1];

	for(i=1;i<=n;i++)
		best[i]=maxim(best[i-1]+v[i],v[i]);

	m=best[1];
	for(i=1;i<=n;i++)
		if(best[i]>m)
		{
			m=best[i];
			k=i;
		}
	int x=k;
	g<<m<<" ";
	while(m>0)
	{
		m=m-v[k];
		k=k-1;
		j++;
	}
	if(j>1)
		k++;

	while(v[k-1]==0)
		k--;

	g<<k<<" "<<x;

	f.close();
	g.close();
	return 0;
}