Cod sursa(job #1461108)
Utilizator | Data | 14 iulie 2015 18:52:44 | |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 95 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.58 kb |
#include<fstream>
using namespace std;
ifstream in("ssm.in");
ofstream out("ssm.out");
#define MAX 6000001
int N,A[MAX],D[MAX];
int main()
{
int N;
in>>N;
for(int i=1;i<=N;i++)
in>>A[i];
int i,j,max,l=1,r=1,S,l_max,r_max;
D[1]=A[1];
max=D[1];
l_max=1;
r_max=1;
for(i=2;i<=N;i++)
{
if(A[i] + A[i-1] > D[i-1] + A[i])
{
D[i]=A[i] + A[i-1];
l=i-1;
r=i;
}
else
{
D[i]=D[i-1] + A[i];
++r;
}
if(D[i] > max)
{
l_max=l;
r_max=r;
max=D[i];
}
}
out<<max<<" "<<l_max<<" "<<r_max;
return 0;
}