Pagini recente » Cod sursa (job #1407666) | Cod sursa (job #1622362) | Cod sursa (job #2513877) | Cod sursa (job #538361) | Cod sursa (job #2780900)
#include <fstream>
using namespace std;
void ssm(ifstream &in, ofstream &out) {
int n, x;
in >> n;
int start = 0;
int bestStart = 0, bestStop = 0;
int best;
in >> best;
int sum = best;
for (int i = 1; i < n; i++) {
in >> x;
sum += x;
if (best < sum) {
best = sum;
bestStart = start;
bestStop = i;
}
if (sum < 0) {
// daca suma curenta e negativa, incep sa verific o noua
// subsecventa care va incepe fie de la pasul curent daca x e
// pozitiv, fie de la pozitia urmatoare
if (x > 0) {
sum = x;
start = i;
} else {
sum = 0;
start = i + 1;
}
}
}
out << best << ' ' << bestStart + 1 << ' ' << bestStop + 1;
}
int main(void) {
ifstream in("ssm.in");
ofstream out("ssm.out");
ssm(in, out);
in.close();
out.close();
return 0;
}