Pagini recente » Cod sursa (job #906555) | Cod sursa (job #519930) | Cod sursa (job #685795) | Cod sursa (job #2111144) | Cod sursa (job #2660098)
#include <fstream>
using namespace std;
ifstream in("ssm.in");
ofstream out("ssm.out");
const int NMAX = 1e5;
const int INF = (1 << 30);
int nn = 3;
int v[NMAX + 2];
int dp[NMAX + 2];
int rec[NMAX + 2];
int main()
{
int N;
in >> N;
/// initializare
dp[0] = 0;
rec[0] = 0;
/// recurenta
for (int i = 1; i <= N; ++i) {
in >> v[i];
if (v[i] > dp[i - 1] + v[i]) {
dp[i] = v[i];
rec[i] = i;
}
else {
dp[i] = dp[i - 1] + v[i];
rec[i] = rec[i - 1];
}
}
/// aflarea raspunsului
int maxsum = -INF, rlef = -1, rgig = -1;
for (int i = 1; i <= N; ++i) {
if (dp[i] > maxsum) {
maxsum = dp[i];
rgig = i;
rlef = rec[i];
}
}
out << maxsum << ' ' << rlef << ' ' << rgig << '\n';
return 0;
}