Pagini recente » Cod sursa (job #3316921) | Cod sursa (job #1205838) | Monitorul de evaluare | Cod sursa (job #500589) | Cod sursa (job #2085638)
#include <iostream>
#include <fstream>
#include <algorithm>
#define nmin -999999999
using namespace std;
ifstream f("ssm.in");
ofstream g("ssm.out");
/*
// ca la Savu
int n, a[6000002], suma, maxa, ifix; // viz[];
int main()
{
int i, j, st, dr;
f>>n;
for (i=1; i<=n; i++)
{
f>>j;
if (suma<0)
{
suma=j;
ifix=i;
}
else
suma+=j;
if (maxa<suma)
{
maxa=suma;
st=ifix;
dr=i;
}
}
g<<maxa<<" "<<st<<" "<<dr;
return 0;
}
*/
/*
// recursiv
int n, a[6000002], suma, maxa, ifix;
int main()
{
int i, j=0, st, dr;
f>>n;
for (i=1; i<=n; i++)
f>>a[i];
for (i=1; i<=n; i++)
{
a[i]+=a[i-1];
if (maxa<a[i]-j)
{
maxa=a[i]-j;
st=ifix+1;
dr=i;
}
if (j>a[i])
{
j=a[i];
ifix=i;
}
}
g<<maxa<<" "<<st<<" "<<dr;
} */
// pt testul 3 in care un singur element e mai mare ca intreaca suma
int n, a[6000002], suma, maxa, ifix, em, pozi; // viz[];
int main()
{
int i, j, st, dr;
f>>n;
em=nmin; suma=nmin; maxa=nmin;
for (i=1; i<=n; i++)
{
f>>j;
if (j>em)
{
em=j;
pozi=i;
}
if (suma<0)
{
suma=j;
ifix=i;
}
else
suma+=j;
if (maxa<suma)
{
maxa=suma;
st=ifix;
dr=i;
}
}
if (maxa>em)
g<<maxa<<" "<<st<<" "<<dr;
else
g<<em<<" "<<pozi<<" "<<pozi;
return 0;
}