Cod sursa(job #488724)

Utilizator ChallengeMurtaza Alexandru Challenge Data 29 septembrie 2010 20:03:47
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <fstream>

using namespace std;

const char InFile[]="ssm.in";
const char OutFile[]="ssm.out";
const int MaxN=6000005;

ifstream fin(InFile);
ofstream fout(OutFile);

int vi,best[MaxN],st[MaxN],sol,maxsol,n;

int main()
{
	fin>>n;
	fin>>vi;
	best[1]=vi;
	st[1]=1;
	for(register int i=2;i<=n;++i)
	{
		fin>>vi;
		if(best[i-1]>=0)
		{
			best[i]=best[i-1]+vi;
			st[i]=st[i-1];
		}
		else
		{
			st[i]=i;
			best[i]=vi;
		}
	}
	fin.close();

	maxsol=best[1];
	sol=1;
	for(register int i=2;i<=n;++i)
	{
		if(best[i]>maxsol)
		{
			maxsol=best[i];
			sol=i;
		}
	}
	fout<<best[sol]<<" "<<st[sol]<<" "<<sol;
	fout.close();
	return 0;
}