Cod sursa(job #880537)
| Utilizator | Data | 16 februarie 2013 21:36:46 | |
|---|---|---|---|
| Problema | Subsecventa de suma maxima | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.65 kb |
#include <fstream>
using namespace std;
ifstream f("ssm.in");
ofstream g("ssm.out");
int n,v[6000001],sum[6000001],i,inc,sf,sm,aux;
int maxim(int a, int b)
{
if (a>b) return a;
return b;
}
int main()
{
f>>n;
f>>v[1];
sm=v[1];
sf=1;
sum[1]=v[1];
for (i=2;i<=n;i++)
{
f>>v[i];
sum[i]=maxim(sum[i-1]+v[i],v[i]);
if (sum[i]>sm)
{
sm=sum[i];
sf=i;
}
}
aux=sm;
for (i=sf;i>=1;i--)
{
aux=aux-v[i];
if (aux==0) inc=i;
}
g<<sm<<" "<<inc<<" "<<sf;
f.close();
g.close();
return 0;
}
