Pagini recente » Cod sursa (job #739873) | Cod sursa (job #1992690) | Cod sursa (job #1562002) | Monitorul de evaluare | Cod sursa (job #1691785)
#include <stdio.h>
#include <limits.h>
FILE *fin,*fout;
int n,i,v[6000001],smax,sbynow,start,startmax,endmax,xmax_negativ,ind,x;
int main()
{
fin=fopen("ssm.in","r");
fout=fopen("ssm.out","w");
fscanf(fin,"%d\n",&n);
xmax_negativ=INT_MIN;
for(i=1;i<=n;i++)
{
fscanf(fin,"%d ",&v[i]);
if(v[i]<0 && v[i]>xmax_negativ)
{
xmax_negativ=v[i];
ind=i;
}
x=v[i]+sbynow;
if(x<0){x=0;start=0;}
else if(x>=0)
{
if(start==0){start=i;}
}
sbynow=x;
if(sbynow>smax)
{
smax=sbynow;
startmax=start;
endmax=i;
}
else if(sbynow==smax)
{
int l1, l2;
l1=endmax-startmax+1;
l2=i-start+1;
if(l2<l1){endmax=i; startmax=start;}
}
}
if(smax==0)
{
fprintf(fout,"%d %d %d",xmax_negativ,ind,ind);
}
else fprintf(fout,"%d %d %d",smax,startmax,endmax);
return 0;
}