Pagini recente » Cod sursa (job #2363196) | Cod sursa (job #2667756) | Cod sursa (job #3160160) | Cod sursa (job #3191580) | Cod sursa (job #2514599)
#include <fstream>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
const int NMAX = 6000000;
int v[NMAX+5];
int main()
{
int i, n, suma, sumamax, stmax, drmax, st, dr;
fin>>n;
for(i =1; i <=n; i ++)
fin>>v[i];
suma = v[1];
sumamax = suma;
stmax = st = dr = 1;
drmax = dr;
for(i=2;i<=n;i++)
{
if(suma + v[i] >= v[i])
{
///e mai avantajos sa continui sa adaug la suma curenta
dr = i;
suma = suma + v[i];
}
else
{
///e mai avantajos sa incep o noua suma de pe pozitia actuala
st = dr = i;
suma = v[i];
}
if(suma > sumamax)
{
///schimbam parametrii pentru suma maxima
drmax = dr;
stmax = st;
sumamax = suma;
}
}
fout<<sumamax<<" "<<stmax<<" "<<drmax<<"\n";
return 0;
}