Pagini recente » Cod sursa (job #293850) | Cod sursa (job #2791282) | Cod sursa (job #1359524) | Cod sursa (job #2112529) | Cod sursa (job #1736096)
#include <iostream>
#include <limits.h>
#include <fstream>
using namespace std;
void maximum_subarray(long *tablou, size_t n)
{
long sum_max = -2147483648, local_max = 0, temp_sum = 0;
size_t imin = 0, imax = 0;
size_t local_imin = 0, local_imax = 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;
g.close();
}
int main()
{
size_t 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;
}