Cod sursa(job #861817)

Utilizator superman_01Avramescu Cristian superman_01 Data 21 ianuarie 2013 22:12:07
Problema Subsecventa de suma maxima Scor 5
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<fstream>

using namespace std;

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

int n,s[6000005],c[6000005],val[6000005];

int main()
{
	
	int i,j;
	f>>n;
	
	int k=1;
	for(i=1;i<=n;i++)
	{
		f>>c[i];
	s[i]=s[i-1]+c[i];
	}
	int start,finish;
	int min=200000;
	int max=0;
	for(i=1;i<=n;i++)
	{
		if(s[i]<min)
			{ 
				min=s[i];
				start=i;
				
		}
		if(s[i]>max)
		{
			max=s[i];
			finish=i;
		}
		c[start]=finish;
		
		if(finish>start)
		
			val[start]=s[finish]-s[start];
	    
		
		
		
	}
	
	
	max=0;
	for(i=1;i<=start;i++)
		if(val[i]>max)
			{
				max=val[i];
				start=i+1;
				finish=c[start-1];
		
	}
		else
			if(val[i]==max)
			{
				if(i<start)
				{
					finish=c[start];
					start=i+1;
				
				}
			}
     g<<max<<" ";
	 g<<start<<" "<<finish;
	
	f.close();
	g.close();
	return 0;
}