Cod sursa(job #701451)
Utilizator | Data | 1 martie 2012 16:01:53 | |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 5 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.54 kb |
#include<cstdio>
using namespace std;
int i,n,v[6000005],minim,maxim,pozmin[6000005],pozmax;
int main(){
freopen("ssm.in","r",stdin);
freopen("ssm.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;++i){
scanf("%d",&v[i]);
v[i]+=v[i-1];
}
v[0]=0;
minim=0;
pozmin[0]=1;
for(i=1;i<=n;++i){
v[i]-=minim;
if(v[i]<minim){
minim=v[i];
pozmin[i]=i+1;
}
else{
pozmin[i]=pozmin[i-1];
}
if(v[i]>maxim){
maxim=v[i];
pozmax=i;
}
}
printf("%d %d %d",maxim,pozmin[pozmax],pozmax);
return 0;
}