Cod sursa(job #703073)
| Utilizator | Data | 2 martie 2012 10:46:34 | |
|---|---|---|---|
| Problema | Subsecventa de suma maxima | Scor | 80 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.52 kb |
#include<fstream>
#define dim 6000000
using namespace std;
FILE *fin=fopen("ssm.in","r");
FILE *fout=fopen("ssm.out","w");
int i,j,n,k,v[dim],s[dim],lmin,max1,o[dim],pozs,pozf;
int main()
{fscanf(fin,"%d",&n);
for(i=1;i<=n;++i)
fscanf(fin,"%d",&v[i]);
o[n]=n;
for(i=n;i>=1;--i)
{
if(v[i]>v[i]+s[i+1])
{s[i]=v[i];
o[i]=i;
}
else
{s[i]=v[i]+s[i+1];
if(i!=n)
o[i]=o[i+1];
}
if(s[i]>=max1)
{max1=s[i];
pozs=i;
pozf=o[i];
}
}
fprintf(fout,"%d %d %d\n",max1,pozs,pozf);
return 0;
}
