Pagini recente » Rating Victor Trocan (victor_dbnm) | Cod sursa (job #774545) | Profil marialungu | Monitorul de evaluare | Cod sursa (job #2683849)
#include <fstream>
using namespace std;
ifstream cin ("ssm.in");
ofstream cout ("ssm.out");
struct
{
int start, sfarsit, suma;
} dp[6000001];
int n, v[6000001], i, poz, j, maxi, startbun, sfarsitbun;
int main()
{
cin >> n;
for(i=1;i<=n;i++)
cin >> v[i];
dp[1].suma=v[1];
dp[1].start=1;
for(i=2;i<=n;i++)
{
if(dp[i-1].suma+v[i]>=0)
{
dp[i].suma=dp[i-1].suma+v[i];
dp[i].sfarsit=i;
dp[i].start=poz;
}
else
{
if(i==2)
poz=2;
dp[i].suma=v[i];
dp[i].sfarsit=i;
dp[i].start=poz;
poz=i;
}
}
if(dp[n].sfarsit!=n)
{
dp[n].sfarsit=n;
dp[n].start=poz;
}
for(i=1; i<n; i++)
{
if(dp[i].suma>maxi)
{
maxi=dp[i].suma;
startbun=dp[i].start;
sfarsitbun=dp[i].sfarsit;
}
}
cout << maxi << ' ' << startbun << ' ' << sfarsitbun;
return 0;
}