Pagini recente » Cod sursa (job #115493) | Cod sursa (job #883680) | Cod sursa (job #3039321) | Cod sursa (job #2114960) | Cod sursa (job #1266163)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("ssm.in");
ofstream g ("ssm.out");
const int NMAX = 6000000 + 1;
int n, a_max, b_max, s_max, s[NMAX];
inline void update(int valoare, int a, int b) {
s_max = valoare;
a_max = a;
b_max = b;
}
void rezolva() {
int x, a, b;
f >> n >> s[1];
update(s[1], 1, 1);
for (int i = 2; i < n; i++) {
f >> x;
if (x + s[i - 1] >= x) {
b++;
s[i] = s[i - 1] + x;
}
else {
a = b = i;
s[i] = x;
}
if (s[i] == s_max)
if (b - a < b_max - a_max) update(s[i], a, b);
if (s[i] > s_max) update(s[i], a, b);
}
g << s_max << ' ' << a_max << ' ' << b_max << '\n';
}
int main() {
rezolva();
return 0;
}