Cod sursa(job #1393647)
Utilizator | Andrei-Mario Dinu dinuand | Data | 19 martie 2015 17:33:17 |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 85 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.62 kb |
#include <fstream>
#include <vector>
#include <limits>
int main()
{
std::ifstream in("ssm.in");
std::ofstream out("ssm.out");
int N;
in >> N;
int first_index = 1, last_index, no;
long long sum = 0, sum_sol;
sum_sol = std::numeric_limits<long long>::min();
for (auto i = 1; i <= N; i++) {
in >> no;
sum += no;
if (sum < 0) {
sum = 0;
first_index = i + 1;
}
if (sum > sum_sol) {
sum_sol = sum;
last_index = i;
}
}
out << sum_sol << " " << first_index << " " << last_index << '\n';
return 0;
}