Pagini recente » Profil DraStiK | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #2027820) | Cod sursa (job #1183788)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
int v[6000005], N, nr;
int Begin, End, BeginEnd, EndEnd, Max;
/*
if(v[i-1] + nr < nr) - conditia 1 - de unde incepe - unde se sfarseste
else - conditia 2 - continua sirul ( ~ unde se sfarseste )
if(v[i] > max)
{
maxfinal = max;
inceputfinal = inceput;
sfarsitfinal = sfarsit;
}
*/
void read()
{
fin >> N;
fin >> nr; v[0] = nr; Max = v[0];
Begin = End = BeginEnd = EndEnd = 1;
for(int i = 1; i < N; i++)
{
fin >> nr;
if(v[i-1] + nr < nr)
{
v[i] = nr;
Begin = i + 1;
End = i + 1;
}
else
{
v[i] = v[i-1] + nr;
End = i + 1;
}
if(v[i] > Max)
{
Max = v[i];
BeginEnd = Begin;
EndEnd = End;
}
}
}
int main()
{
read();
fout << Max << " " << BeginEnd << " " << EndEnd;
return 0;
}