Pagini recente » Cod sursa (job #1331646) | Cod sursa (job #2090429) | Cod sursa (job #24546) | Cod sursa (job #447968) | Cod sursa (job #1452431)
#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++)
{
if(maxEndingHere < 0)
{
maxEndingHere = array[i];
start = i + 1;
}
else
{
maxEndingHere += array[i];
}
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];
fout << " " << result[2] + 1;
fout << std::endl;
fin.close();
fout.close();
return 0;
}