Pagini recente » Cod sursa (job #2792792) | Cod sursa (job #914700) | Cod sursa (job #1737859) | Cod sursa (job #130982) | Cod sursa (job #2705433)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int N;
ifstream f("ssm.in");
ofstream g("ssm.out");
void solve(vector<int> arr)
{
vector<int> sumMaxes(N);
sumMaxes[0] = arr[0];
int ssMax = INT32_MIN;
int ssEnd_Max = 0;
int ssStart_Max = 0;
int ssEnd = 0;
int ssStart = 0;
for (int i = 1; i < N; i++)
{
if (sumMaxes[i - 1] >= 0)
{
sumMaxes[i] = sumMaxes[i - 1] + arr[i];
}
else
{
sumMaxes[i] = arr[i];
}
if (ssMax < sumMaxes[i])
{
ssMax = sumMaxes[i];
ssStart_Max = ssStart;
ssEnd_Max = ssEnd;
}
if (sumMaxes[i] < 0)
{
ssStart = i + 1;
ssEnd = i + 1;
}
else
{
ssEnd++;
}
}
g << ssMax << " " << ssStart_Max + 1 << " " << ssEnd_Max + 1;
}
int main()
{
// Program
f >> N;
vector<int> arr(N);
for (int i = 0; i < N; i++)
{
f >> arr[i];
}
solve(arr);
// Exit
f.close();
g.close();
return 0;
}