Pagini recente » Cod sursa (job #783061) | Cod sursa (job #417248) | Cod sursa (job #3267662) | Cod sursa (job #325459) | Cod sursa (job #2568272)
#include <bits/stdc++.h>
using namespace std;
ifstream in;
ofstream out;
vector<pair<int, int>> sol;
vector<int> v;
int inc, fin, max1;
void kadane()
{
sol.resize(v.size() + 2);
sol[0].first = max1 = v[0];
sol[0].second = 0;
for (int i = 1; i < v.size(); i++)
{
if (v[i] <= v[i] + sol[i - 1].first)
{
sol[i].first = v[i] + sol[i - 1].first;
sol[i].second = sol[i - 1].second;
}
else
{
sol[i].first = v[i];
sol[i].second = i;
}
if (sol[i].first > max1)
{
max1 = sol[i].first;
inc = sol[i].second;
fin = i;
}
}
}
int n;
int main()
{
in.open("ssm.in");
out.open("ssm.out");
in >> n;
for (int i = 0; i < n; i++)
{
int x;
in >> x;
v.push_back(x);
}
kadane();
out << max1 << " " << inc + 1 << " " << fin + 1;
}