Pagini recente » Borderou de evaluare (job #2426226) | Cod sursa (job #736313) | Cod sursa (job #394934) | Borderou de evaluare (job #2506744) | Cod sursa (job #3345486)
#include <bits/stdc++.h>
using namespace std;
ifstream in("ssm.in");
ofstream out("ssm.out");
int main()
{
int n;
in >> n;
vector<int> v(n + 1);
for (int i = 1; i <= n; i++) {
in >> v[i];
}
int dp_prev, dp_curent;
int start_prev, start_curent, end_maxim;
dp_prev = dp_curent = v[1];
start_prev = 1;
end_maxim = 1;
int ssm = dp_curent;
for (int i = 2; i <= n; i++) {
start_curent = i;
if (dp_prev >= 0) {
dp_curent = dp_prev + v[i];
start_curent = start_prev;
} else {
dp_curent = v[i];
}
if (dp_curent > ssm) {
ssm = dp_curent;
end_maxim = i;
}
start_prev = start_curent;
dp_prev = dp_curent;
}
out << ssm << " " << start_curent << " " << end_maxim;
in.close();
out.close();
return 0;
}