Pagini recente » Cod sursa (job #1183655) | Cod sursa (job #3339907) | Cod sursa (job #46193) | Cod sursa (job #2646571) | Cod sursa (job #3321145)
#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 startPoints[n];
startPoints[0] = 1;
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 (best[i] == arr[i]) {
startPoints[i] = 1;
}
else {
startPoints[i] = 0;
}
if (best[i] > maxSubSeq) {
maxSubSeq = best[i];
maxSubSeqEnd = i;
}
}
for(int i = maxSubSeqEnd; true; i--) {
if(startPoints[i] == 1) {
output << maxSubSeq << ' ' << i+1 << ' ' << maxSubSeqEnd+1;
break;
}
}
return 0;
}