Cod sursa(job #1076388)
Utilizator | Niculae Alexandru Vlad AlexNiuclae | Data | 10 ianuarie 2014 09:06:31 |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 95 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.6 kb |
#include <cstdio>
using namespace std;
int i,n,x,b[6000004],a[6000004],minx,miny,Max,mm;
int main()
{
freopen("ssm.in","r",stdin);
freopen("ssm.out","w",stdout);
scanf("%d", &n);
a[0]=0; b[0]=0;
for (i=1;i<=n;i++)
{
scanf("%d", &x); if (i==1) mm=x;
a[i]=a[i-1]+x;
if (a[i]<mm) {b[i]=i; mm=a[i];}
else b[i]=b[i-1];
}
Max=a[1]-a[0]; minx=1; miny=1;
for (i=1;i<=n;i++) if (Max<a[i]-a[b[i]]) {Max=a[i]-a[b[i]]; minx=b[i]+1; miny=i;}
printf("%d %d %d", Max,minx,miny);
return 0;
}