Pagini recente » Cod sursa (job #2769977) | Cod sursa (job #901609) | Cod sursa (job #1631127) | Cod sursa (job #3242060) | Cod sursa (job #1452423)
#include <iostream>
#include <fstream>
#include <vector>
std::vector<int> MaxSubarray(int array[], int size)
{
int maxSoFar = 0;
int maxEndingHere = 0;
int start = 0;
int bestStart = 0;
int stop = -1;
for(int i = 0; i < size; i++)
{
maxEndingHere += array[i];
if(maxEndingHere < 0)
{
maxEndingHere = 0;
start = i + 1;
}
if(maxSoFar < maxEndingHere)
{
maxSoFar = maxEndingHere;
bestStart = start;
stop = i;
}
}
std::vector<int> retval {maxSoFar, bestStart, stop};
return retval;
}
int main()
{
std::ifstream fin("ssm.in");
std::ofstream fout("ssm.out");
int size;
int* array;
fin >> size;
array = new int[size];
for(int i = 0; i < size; i++)
fin >> array[i];
auto result = MaxSubarray(array, size);
fout << result[0];
fout << " " << result[1] + 1;
fout << " " << result[2] + 1;
fout << std::endl;
fin.close();
fout.close();
return 0;
}