Pagini recente » Cod sursa (job #794047) | Cod sursa (job #1017772) | Cod sursa (job #1131769) | Cod sursa (job #746749) | Cod sursa (job #2809814)
#include <fstream>
#include <vector>
#include <climits>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
int main() {
vector<int> start_indexes;
int n, value, max_sum = INT_MIN, current_sum = 0, start_index = 0, start_pos = 0, end_pos = 0;
// current_sum - stores the maximum value between the current value and the sum of previously computed sum and current value
// max_sum - computes the maximum value between 0 and the largest value out of all current sums
fin >> n;
for (int i = 1; i <= n; ++i) {
fin >> value;
if (value > current_sum + value) {
start_index = i;
}
current_sum = max(current_sum + value, value);
if (current_sum > max_sum) {
start_pos = start_index;
end_pos = i;
}
max_sum = max(current_sum, max_sum);
}
fout << max_sum << ' ' << start_pos << ' ' << end_pos;
return 0;
}