Pagini recente » Cod sursa (job #1055969) | Cod sursa (job #2519943) | Cod sursa (job #461497) | Cod sursa (job #1621748) | Cod sursa (job #1736090)
#include <iostream>
#include <limits>
#include <fstream>
using namespace std;
int maximum_subarray(long *tablou, int n)
{
int sum_max = INT_MIN, imin = 0, imax = 0;
int local_max = 0, local_imin = 0, local_imax = 0;
int temp_sum = 0;
for(size_t i = 0; i < n; i++)
{
temp_sum = local_max + tablou[i];
if(temp_sum > 0)
{
local_max = temp_sum;
local_imax = i;
}
else
{
local_max = 0;
local_imax = i;
local_imin = i + 1;
}
if(sum_max < local_max)
{
sum_max = local_max;
imax = local_imax;
imin = local_imin;
}
}
ofstream g("ssm.out");
g << sum_max << " " << imin + 1 << " " << imax + 1;
}
int main()
{
int n;
long *tablou;
ifstream f("ssm.in");
f >> n;
tablou = new long [n];
for(size_t i = 0; i < n; i++)
f >> tablou[i];
f.close();
maximum_subarray(tablou, n);
return 0;
}