Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int Day1b()
- {
- int currVal = 0;
- int currSum = 0;
- std::vector<int> inputs;
- std::vector<int> SumTill;
- // Open the file.
- std::fstream file;
- std::string inputFilePath = "../input/day1.txt";
- file.open(inputFilePath);
- std::string line;
- while (file >> currVal)
- {
- inputs.push_back(currVal);
- currSum += currVal;
- SumTill.push_back(currSum);
- }
- //close file.
- file.close();
- //run loop till result is found
- int result = 0;
- int lastvalue = SumTill.back();
- int lowestIterationCount = std::numeric_limits<int>::max();
- int lowestIndex = std::numeric_limits<int>::max();
- //check each result
- for (size_t i = 0; i < SumTill.size(); i++)
- {
- int first = SumTill[i];
- //check with each other result
- for (size_t j = i + 1; j < SumTill.size(); j++)
- {
- int second = SumTill[j];
- //validate
- if ((first - second) % lastvalue != 0)continue;
- int iterations = abs((first - second) / lastvalue);
- if (iterations > lowestIterationCount)continue;
- //remember if current best
- if (first < second && lastvalue > 0 || first > second && lastvalue < 0)
- {
- if (lowestIterationCount == iterations && i > lowestIndex)break;
- result = second;
- lowestIndex = i;
- }
- else
- {
- if (lowestIterationCount == iterations && j > lowestIndex)break;
- result = first;
- lowestIndex = j;
- }
- lowestIterationCount = iterations;
- }
- }
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement