Pagini recente » Borderou de evaluare (job #1181425) | Cod sursa (job #1367084) | Borderou de evaluare (job #2486577) | Cod sursa (job #2297648) | Cod sursa (job #3321147)
#include <fstream>
std::ifstream input ("ssm.in");
std::ofstream output ("ssm.out");
int main () {
int n;
input >> n;
int arr[n];
for (int i = 0; i < n; ++i) {
int temp;
input >> temp;
arr[i] = temp;
}
int best[n];
best[0] = arr[0];
int currentSubSeqStart = 0;
int maxSubSeqStart = 0;
int maxSubSeq = arr[0];
int maxSubSeqEnd = 0;
for (int i = 1; i < n; ++i) {
best[i] = std::max(arr[i], best[i - 1] + arr[i]);
if (arr[i] > best[i - 1] + arr[i]) {
currentSubSeqStart = i;
}
if (best[i] > maxSubSeq) {
maxSubSeq = best[i];
maxSubSeqEnd = i;
maxSubSeqStart = currentSubSeqStart;
}
}
output << maxSubSeq << ' ' << maxSubSeqStart +1 << ' ' << maxSubSeqEnd +1;
return 0;
}