Cod sursa(job #404760)
Utilizator | Data | 26 februarie 2010 17:33:27 | |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 30 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.53 kb |
#include <fstream>
using namespace std;
ifstream f ("ssm.in");
ofstream g ("ssm.out");
int n,a[6000006],smax,i,imax,i1,s,i2,imax2;
int main ()
{f>>n;
for(i=1;i<=n;i++)
f>>a[i];
smax=a[1];s=a[1];imax=1;imax2=1;i1=1;
for (i=2;i<=n;i++)
{if (s+a[i]>a[i])
{s=s+a[i];
i2=i;
}
else
if(s+a[i]<a[i])
{s=a[i];
i1=i;
i2=i;
}
if (smax<s)
{smax=s; imax=i1;imax2=i2;}
if(smax==s)
if (imax2-imax>i2-i1)
{imax2=i2;imax=i1;}
}
g<<smax<<" "<<imax<<" "<<imax2;
return 0;
}