Pagini recente » infoarena - comunitate informatica, concursuri de programare | Cod sursa (job #2360859) | Cod sursa (job #2171516) | Cod sursa (job #2157118) | Cod sursa (job #1727651)
# include <bits/stdc++.h>
using namespace std;
const int Nmax = 6000000 + 5;
int n, a[Nmax], D[Nmax], i;
int main ()
{
freopen("ssm.in", "r", stdin);
freopen("ssm.out", "w", stdout);
scanf("%d\n", &n);
for (i = 1; i <= n; ++i)
scanf("%d ", &a[i]);
D[0] = 0;
int ans = -INT_MAX, beginn = 0, endd = 0, start = 0;
// dinamica : D[i] = max ( D[i - 1] + a[i], a[i] ) ;
for (i = 1; i <= n; ++i)
{
if (a[i] > D[i - 1] + a[i]) D[i] = a[i], start = i;
else D[i] = D[i - 1] + a[i];
if (D[i] > ans) ans = D[i], beginn = start, endd = i;
}
printf("%d %d %d\n", ans, beginn, endd);
return 0;
}