Cod sursa(job #863353)

Utilizator StexanIarca Stefan Stexan Data 23 ianuarie 2013 19:05:36
Problema Subsecventa de suma maxima Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include<fstream> 
using namespace std;
ifstream f("ssm.in");
ofstream g("ssm.out");
int n, x[6000000],s,m,start, finish,indice, check,k,best1, best2,suma1,suma2,finish1, finish2; 

int main()
{ 
	int i; 
	f>>n; 
	 m=-2000000;
	for(i=1; i<=n; i++)    
		f>>x[i];   

	for(i=1; i<=n; i++)    
	{        
		if( s+x[i]>x[i] )           
			s=s+x[i];       
		else       
			{            
				s=x[i];           
				start = i;       
			}        
		if(s>m)        
		{   indice=i;         
			m=s;            
			finish=i;
			best1=0; best2=0; suma1=0; suma2=0; finish1=0; finish2=0;
		}  
		else if( m == s)
		{	
			if(best1==0)
			{	finish1=i;
				best1 = start; suma1=finish1-start;
			}
			else if(best2==0)
			{	finish2=i;
				best2=start; suma2=finish2-start;
			}
		}
	}   
	if(best1>0&&best2>0)
	{
		if(best1==best2)
			if(suma1<suma2)
				g<<m<<" "<<best1<<" "<<finish1;
			else
				g<<m<<" "<<best2<<" "<<finish2;
		else
			if(best1<best2)
				g<<m<<" "<<best1<<" "<<finish1;
			else
				g<<m<<" "<<best2<<" "<<finish2;
	}
	else
	g<<m<<" "<<start<<" "<<finish;
}