1007 Maximum Subsequence Sum
#include <iostream>
#include <climits>
using namespace std;
const int N = 10010;
int num[N], dp[N], n, tempFN, maxLN, maxFN, maxN = INT_MIN, maxSQ = INT_MIN;
int main()
{
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> num[i];
maxN = max(maxN, num[i]);
}
dp[0] = num[0];
maxSQ = dp[0];
for (int i = 1; i < n; i++)
{
if (dp[i - 1] > 0)
dp[i] = dp[i - 1] + num[i];
else
{
dp[i] = num[i];
tempFN = i;
}
if (maxSQ < dp[i])
{
maxSQ = dp[i];
maxFN = tempFN;
maxLN = i;
}
}
if (maxN < 0)
cout << 0 << ' ' << num[0] << ' ' << num[n - 1];
else
cout << maxSQ << ' ' << num[maxFN] << ' ' << num[maxLN];
return 0;
}