Cod sursa(job #1008586)

Utilizator jsteJames Sawyer jste Data 11 octombrie 2013 12:58:21
Problema Subsecventa de suma maxima Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include<iostream>
#include<fstream>
#define DMAX 6000005

using namespace std;

ifstream f("ssm.in");
ofstream g("smm.out");

int dp[DMAX],v[DMAX],poz[DMAX];
int n;

int main()
{
	f>>n;
	for(int i=1;i<=n;i++)
		f>>v[i];
	dp[n]=v[n];
	for(int i=n-1;i>=1;i--)
	{
		if(v[i]>dp[i+1]+v[i]) 
		{
			dp[i]=v[i];
			poz[i]=0;
		}
		else
		{
			dp[i]=dp[i+1]+v[i];
			poz[i]=poz[i+1]+1;
		}
	}
	
	int max=0,pozm=0;
	for(int i=1;i<=n;i++)
	{
		//cout<<dp[i]<<"    "<<v[i]<<"\n";
		if(max<dp[i]) 
		{
			max=dp[i];
			pozm=i;
		}
	}
	g<<dp[pozm]<<" "<<pozm<<" "<<poz[pozm]+pozm;
	return 0;
}