Cod sursa(job #2368963)
| Utilizator | Data | 5 martie 2019 20:08:34 | |
|---|---|---|---|
| Problema | Subsecventa de suma maxima | Scor | 0 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.75 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("ssm.in");
ofstream g("ssm.out");
int N,v[6000005],dp[6000005];
int SSM,start,stop,best_s=-int(2e9),S=0;
int main()
{
f>>N;
for(int i=1; i<=N; i++)
{
f>>v[i];
dp[i]=max(dp[i-1]+v[i],v[i]);
best_s=max(best_s,dp[i]);
}
for(int i=1; i<=N; i++)
{
if(S>0)
{
S+=v[i];
//cout<<S<<" ";
if(S==best_s)
{
SSM=best_s;
stop=i;
break;
}
}
else
{
start=v[i];
S=v[i];
//cout<<S<<" ";
}
}
g<<SSM<<" "<<start<<" "<<stop;
}
