Advertisement
Guest User

Untitled

a guest
Dec 1st, 2018
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.41 KB | None | 0 0
  1. int Day1b()
  2. {
  3.  
  4.     int currVal = 0;
  5.     int currSum = 0;
  6.     std::vector<int> inputs;
  7.     std::vector<int> SumTill;
  8.  
  9.     // Open the file.
  10.     std::fstream file;
  11.     std::string inputFilePath = "../input/day1.txt";
  12.     file.open(inputFilePath);
  13.  
  14.     std::string line;
  15.     while (file >> currVal)
  16.     {
  17.         inputs.push_back(currVal);
  18.         currSum += currVal;
  19.         SumTill.push_back(currSum);
  20.     }
  21.  
  22.     //close file.
  23.     file.close();
  24.  
  25.     //run loop till result is found
  26.     int result = 0;
  27.     int lastvalue = SumTill.back();
  28.     int lowestIterationCount = std::numeric_limits<int>::max();
  29.     int lowestIndex = std::numeric_limits<int>::max();
  30.     //check each result
  31.     for (size_t i = 0; i < SumTill.size(); i++)
  32.     {
  33.         int first = SumTill[i];
  34.         //check with each other result
  35.         for (size_t j = i + 1; j < SumTill.size(); j++)
  36.         {
  37.  
  38.             int second = SumTill[j];
  39.             //validate
  40.             if ((first - second) % lastvalue != 0)continue;
  41.  
  42.             int iterations = abs((first - second) / lastvalue);
  43.             if (iterations > lowestIterationCount)continue;
  44.             //remember if current best
  45.  
  46.             if (first < second && lastvalue > 0 || first > second && lastvalue < 0)
  47.             {
  48.                 if (lowestIterationCount == iterations && i > lowestIndex)break;
  49.                 result = second;
  50.                 lowestIndex = i;
  51.             }
  52.             else
  53.             {
  54.                 if (lowestIterationCount == iterations && j > lowestIndex)break;
  55.                 result = first;
  56.                 lowestIndex = j;
  57.             }
  58.             lowestIterationCount = iterations;
  59.         }
  60.     }
  61.  
  62.     return result;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement