Pagini recente » Cod sursa (job #2326997) | Cod sursa (job #73191) | Cod sursa (job #2276519) | Cod sursa (job #3233589) | Cod sursa (job #1784833)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int N;
vector<int> nrs;
ifstream in("ssm.in");
ofstream out("ssm.out");
void read_input()
{
in >> N;
nrs.resize(N);
for (int i = 0; i < N; i++) {
in >> nrs[i];
}
}
void dyn_ssm()
{
vector<int> dyn(N);
vector<int> start(N);
for (int i = 0; i < N; i++) {
dyn[i] = nrs[i];
start[i] = i;
}
int maxGlobalSum = dyn[0];
int globalEndIdx = 0;
for (int i = 1; i < N; i++) {
if (dyn[i] < dyn[i - 1] + nrs[i]) {
dyn[i] = dyn[i - 1] + nrs[i];
start[i] = start[i - 1];
}
if (maxGlobalSum < dyn[i]) {
maxGlobalSum = dyn[i];
globalEndIdx = i;
}
}
out << maxGlobalSum << " " << start[globalEndIdx] + 1 << " " << globalEndIdx + 1;
}
int main()
{
read_input();
dyn_ssm();
return 0;
}