Pagini recente » Cod sursa (job #2632402) | Cod sursa (job #812597) | Cod sursa (job #3139806) | Cod sursa (job #702881) | Cod sursa (job #2258198)
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <vector>
#include <array>
#include <algorithm>
#include <vector>
#include <stack>
#include <set>
#include <assert.h>
#include <queue>
#include <chrono>
#include <memory>
#include <cstring>
using LL = long long;
using ULL = int long long;
const std::string _problemName = "ssm";
#define USE_FILES
#ifdef USE_FILES
namespace std {
std::ifstream fin(_problemName + ".in");
std::ofstream fout(_problemName + ".out");
}
#define cin fin
#define cout fout
#endif
struct Result {
int beginIndex;
int endIndex;
int sum;
};
Result computeMaximumSumSequence(const std::vector<int>& vector) {
if (vector.empty()) {
// exception
}
Result result;
result.beginIndex = 0;
result.endIndex = 1;
result.sum = vector[0];
int partialSum = 0;
int currentBeginIndex = 0;
for (int idx = 0; idx < vector.size(); ++idx) {
partialSum += vector[idx];
if (result.sum < partialSum) {
result.sum = partialSum;
result.beginIndex = currentBeginIndex;
result.endIndex = idx + 1;
}
if (partialSum < 0) {
partialSum = 0;
currentBeginIndex = idx + 1;
}
}
return result;
}
int main() {
int n;
std::cin >> n;
std::vector<int> v(n);
for (auto& it : v) {
std::cin >> it;
}
Result result = computeMaximumSumSequence(v);
std::cout << result.sum << ' ' << result.beginIndex + 1 << ' ' << result.endIndex << '\n';
return 0;
}