Pagini recente » Cod sursa (job #2671989) | Cod sursa (job #2438576) | Cod sursa (job #500383) | Cod sursa (job #472850) | Cod sursa (job #3142281)
#include <iostream>
using namespace std;
const int INF = 1e9; //1'000'000'000
const int NMAX = 6'000'001;
/// int a[NMAX];
int dp[NMAX]; // suma maxima a unei subsecvente care se termina in i
int start[NMAX]; // inceputul subsecventei de suma maxima care se termina in i
int main ()
{
freopen("ssm.in" , "r" , stdin);
freopen("ssm.out" , "w" , stdout);
int n; cin >> n;
int ans = -INF;
int startAns, endAns;
int a;
for (int i = 1; i <= n; i++)
{
cin >> a;
if (dp[i-1] >= 0)
{
start[i] = start[i-1];
dp[i] = dp[i-1] + a;
}
else //
{
start[i] = i;
dp[i] = a;
}
// updatam ans
if (ans < dp[i])
{
ans = dp[i];
startAns = start[i];
endAns = i;
}
}
cout << ans << ' ' << startAns << ' ' << endAns << '\n';
}