Pagini recente » Cod sursa (job #384906) | Cod sursa (job #2753350) | Cod sursa (job #434852) | Cod sursa (job #776857) | Cod sursa (job #1282025)
#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;
}