Pagini recente » Cod sursa (job #809720) | Cod sursa (job #1650769) | Cod sursa (job #2433181) | Cod sursa (job #1804429) | Cod sursa (job #2558545)
#include <iostream>
#include <stdio.h>
using namespace std;
#define NMAX 6000000
int s[NMAX+10];
int v[NMAX+10], l[NMAX+10];
int max (int a,int b){
if(a>b){
return a;
}
return b;
}
int main()
{
FILE *fin,*fout;
fin=fopen("ssm.in","r");
fout=fopen("ssm.out","w");
int n,i,MAX,inceput,sfarsit,MIN;
fscanf(fin,"%d",&n);
for(i=1;i<=n;i++){
fscanf(fin,"%d",&v[i]);
}
for(i=1;i<=n;i++){
s[i]=max(s[i-1]+v[i],v[i]);
if(s[i]==s[i-1]+v[i]){
l[i]=l[i-1]+1;
}
else{
l[i]=1;
}
}
MAX=-1;
MIN=6000000;
for(i=1;i<=n;i++){
if(s[i]>MAX){
MAX=s[i];
MIN=l[i];
inceput=i-l[i];
sfarsit=i;
}
if(s[i]==MAX&&l[i]<MIN){
inceput=i-l[i];
sfarsit=i;
}
}
fprintf(fout,"%d %d %d",MAX,inceput+1,sfarsit);
fclose(fin);
fclose(fout);
return 0;
}