Cod sursa(job #1282025)

Utilizator mariusbsUnibuc Serban mariusbs Data 3 decembrie 2014 21:53:09
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<fstream>
using namespace std;
ifstream in("ssm.in");
ofstream out("ssm.out");
int main(){
int n,x,s=-1,smax=(-1)*(1<<31),st,stmax,drmax,i;
//n=nr de elemente ale vectorului; x=element al vectorului
//s=suma actuala->am pus-o egala cu -1 pt ca la prima iteratie a while-ului "s" devine 0 si "st" ia valoarea primei valori din sir
//smax=suma maxima=-2^31
//st=pozitia primului element al sumei curente; stmax=pozitia primului element al sumei maxime
//drmax=pozitia ultimului element al sumei maxime
in>>n;
for(i=1;i<=n;i++){
	in>>x;
	//daca suma anterioara<0 atunci suma devine 0, apoi o adunam cu "x"
	if(s<0)
	{
		s=0;
		st=i;
	}
	s+=x;
	if(s>smax)
	{
		smax=s;
		stmax=st;
		drmax=i;
	}
}
out<<smax<<" "<<stmax<<" "<<drmax;	
return 0;	
}