Cod sursa(job #516121)
Utilizator | elev gigel worstbyte | Data | 23 decembrie 2010 11:32:16 |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.49 kb |
#include<fstream>
#define NM 6000001
using namespace std;
ifstream in("ssm.in");
ofstream out("ssm.out");
int n,v[NM],s[NM];
int main(){
int i,j,smax,sc,first=0,last=0,smin,imin;
in>>n;
for(i=1;i<=n;++i){
in>>v[i];
s[i]=s[i-1]+v[i];
}
smax=INT_MIN;smin=v[1];imin=1;
for(i=2;i<=n;++i){
sc=s[i]-smin;
if(sc>smax){
smax=sc;
first=imin;
last=i;
}
if(s[i]<smin){
smin=s[i];
imin=i;
}
}
out<<smax<<" "<<first+1<<" "<<last;
return 0;
}