Cod sursa(job #392253)

Utilizator preda_alexandruPreda Alexandru preda_alexandru Data 7 februarie 2010 02:46:10
Problema Subsecventa de suma maxima Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include<fstream.h>
#include<iostream.h>
long v[6000000],ls[100],ld[100];
int main()
{
long n,i,j,max,c=0,min,poz;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
fin>>n;
for(i=0;i<n;i++)fin>>v[i];
for(i=1;i<n;i++)if(v[i]+v[i-1]>v[i])v[i]=v[i]+v[i-1];
max=v[0];
ls[1]=0;
ld[1]=0;
for(i=1;i<n;i++){
				if(max==v[i]){
							 c++;
							 ld[c]=i;
							 }
				if(max<v[i]){
							max=v[i];
							ld[1]=i;
							c=1;
							}
				}
min=0;
poz=1;
for(j=1;j<=c;j++){
				 for(i=ld[j];i>=0;i--)if(v[i]<=0)
							{
							ls[j]=i+1;
							break;
							}
				 if(ld[j]-ls[j]<min){
								 min=ld[j]-ls[j];
								 poz=j;
								 }
				 }
fout<<max<<' '<<ls[poz]+1<<' '<<ld[poz]+1;
return 0;
}