Pagini recente » Cod sursa (job #1469317) | Cod sursa (job #1351461) | Cod sursa (job #2797133) | Cod sursa (job #496178) | Cod sursa (job #1430878)
#include <iostream>
#include <fstream>
#define NMAX 6000000
#define max(a,b) ((a) > (b))?(a):(b)
#define NEGINF 0xff3f3f3f
const char IN[] = "ssm.in", OUT[] = "ssm.out";
using namespace std;
int N;
int v[NMAX];
inline void readData() {
freopen(IN, "r", stdin);
scanf(" %d", &N);
for (int i = 0; i < N; ++i) scanf(" %d", &v[i]);
fclose(stdin);
}
inline void ssm(int &bstart, int &bend, int &bmax) {
int best_crt, start_seq, end_seq;
bmax = NEGINF;
best_crt = v[0];
start_seq = end_seq = 0;
for (int i = 1; i < N; ++i) {
if (v[i] <= best_crt + v[i]) {
best_crt = best_crt + v[i];
++end_seq;
}
else {
best_crt = v[i];
start_seq = end_seq = i;
}
if (best_crt > bmax) bmax = best_crt, bstart = start_seq, bend = end_seq;
}
}
int main() {
readData();
int st, en, sum;
ssm(st, en, sum);
freopen(OUT, "w", stdout);
printf("%d %d %d\n", sum, st+1, en+1);
fclose(stdout);
return 0;
}