Cod sursa(job #523812)

Utilizator APOCALYPTODragos APOCALYPTO Data 19 ianuarie 2011 13:54:51
Problema Subsecventa de suma maxima Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
using namespace std;
#include<iostream>
#include<fstream>

ofstream fout("ssm.out");
int N,a[6000005],dp[6000006],rem[6000006],crem[6000006];
void solve()
{int i;
	for(i=1;i<=N;i++)
    {
		if(dp[i-1]+a[i]>a[i])
			 rem[i]=rem[i-1],dp[i]=dp[i-1]+a[i];
		else 
			 rem[i]=i,dp[i]=a[i]; 
	}
	int ans=-0x3f3f3f3f,st,end;
	for(i=1;i<=N;i++)
	{   if(ans<dp[i])
		  ans=dp[i],st=rem[i],end=i;
	
	}
	
	fout<<ans<<" "<<st<<" "<<end<<"\n";
	
}

void init()
{   int i;
	dp[0]=-0x3f3f3f3f;
	
	for(i=1;i<=N;i++)
		dp[i]=0;
}

void cit()
{int i;
	ifstream fin("ssm.in");
	
	fin>>N;
	for(i=1;i<=N;i++)
		fin>>a[i];
	
	
	
	fin.close();
	
}


int main()
{
  cit();
  init();
  solve();
  fout.close();
  return 0;
}