Cod sursa(job #1004952)
Utilizator | Dani Stetcu DaniEs | Data | 3 octombrie 2013 20:53:31 |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 90 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.54 kb |
#include <fstream>
#define NMax 6000005
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
int N, S[NMax], DP[NMax];
int main()
{
int maxim=-1, start, finish, beg;
fin>>N;
for(int i=1; i<=N; i++)
fin>>S[i];
for(int i=1; i<=N; i++)
{
DP[i]=max(DP[i-1]+S[i],S[i]);
if(DP[i]==S[i])
start=i;
if(DP[i]>maxim)
{
beg=start;
maxim=DP[i];
finish=i;
}
}
fout<<maxim<<" "<<beg<<" "<<finish<<'\n';
}