Pagini recente » Borderou de evaluare (job #1725244) | Borderou de evaluare (job #2074805) | Borderou de evaluare (job #1811748) | Borderou de evaluare (job #887661) | Cod sursa (job #3344591)
#include <iostream>
#define NMAX 6000000U
int main()
{
int n;
int start_i, end_i, max_sum;
int neg_i, neg_sum;
freopen("ssm.in", "r", stdin);
freopen("ssm.out", "w", stdout);
start_i = 0;
end_i = 0;
max_sum = 0;
neg_i = 0;
neg_sum = 1 << 31;
std::cin >> n;
for (int x, sum = 0, i = 0, j = 0; j < n; ++j) {
std::cin >> x;
if (x < 0 && x > neg_sum) {
neg_sum = x;
neg_i = j;
}
if (sum + x < 0) {
sum = 0;
i = j + 1;
} else {
sum += x;
if (sum > max_sum) {
start_i = i;
end_i = j + 1;
max_sum = sum;
}
}
}
if (max_sum > 0)
std::cout << max_sum << ' ' << start_i + 1 << ' ' << end_i << "\n";
else
std::cout << neg_sum << ' ' << neg_i + 1 << '\n';
return 0;
}