Pagini recente » Cod sursa (job #2459236) | Cod sursa (job #2897873) | Borderou de evaluare (job #2028596) | Cod sursa (job #601236) | Cod sursa (job #340103)
Cod sursa(job #340103)
#include <fstream>
#include <climits>
using namespace std;
ifstream cin ("ssm.in");
ofstream cout ("ssm.out");
int N, Max(INT_MIN), MaxPoz;
int start=1, stop=1, sum;
int Mstart, Mstop, Msum;
int GetPozitive (int i)
{
for (; i<=N; ++i)
{
int x; cin>>x;
if (x > Max) { Max = x, MaxPoz = i; }
if (x >= 0)
{
start = stop = i, sum = x;
return i;
}
}
return i;
}
void commit ()
{ Mstart = start, Mstop = stop, Msum = sum; }
int main()
{
cin>>N;
for (int i=1; i<=N; ++i)
{
int x; cin>>x;
if (x > Max) { Max = x, MaxPoz = i; }
sum += x, stop = i;
if (sum < 0) i = GetPozitive (i+1);
if (sum > Msum) commit ();
}
if (Max < 0) cout<<Max<<' '<<MaxPoz<<' '<<MaxPoz<<'\n';
else cout<<Msum<<' '<<Mstart<<' '<<Mstop<<'\n';
return 0;
}