Cod sursa(job #1520918)
Utilizator | Data | 9 noiembrie 2015 18:33:03 | |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 15 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.64 kb |
#include<cstdio>
using namespace std;
int n,v[6000000],d[50000000],pos[6000000];
char maxim=-128,s,f;
int main()
{
d[0]=0;
freopen("ssm.in","r",stdin);
freopen("ssm.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&v[i]);
if(d[i-1]>0) d[i]=d[i-1]+v[i];
else d[i]=v[i];
if(d[i]==v[i]) pos[i]=i;
else {
pos[i]=pos[i-1];
while(v[pos[i]-1]==0) pos[i]--;
}
if(d[i]>=maxim)
{
maxim=d[i];
f=i;
s=pos[i];
}
}
printf("%d %d %d\n",maxim,s,f);
}