Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <vector>
- #include <array>
- #include <algorithm>
- std::vector<int> adapters;
- int CalculateDifference(int outlet, int adapter)
- {
- int diff = adapter - outlet;
- return diff;
- }
- long long FindArrangements(std::string output = "0, ")
- {
- //Part 1
- int diff = 0;
- int outlet = 0;
- std::array<int, 3> numDiffs = { 0, 0, 0 };
- for (unsigned int i = 1; i < adapters.size(); i++)
- {
- diff = CalculateDifference(outlet, adapters[i]);
- numDiffs[diff - 1]++;
- outlet += diff;
- output += std::to_string(outlet) + ", ";
- }
- output += "[ ";
- for (unsigned int i = 0; i < 3; i++)
- output += std::to_string(numDiffs[i]) + " ";
- output += "]";
- std::cout << output << std::endl;
- //Part 2 - Result too low
- std::vector<long long> path(adapters.size(), 0);
- path[path.size() - 1] = 1;
- for(int i = path.size() - 1; i >= 0; i--)
- {
- for (int j = i + 1; j < adapters.size(); j++)
- {
- if (adapters[j] - adapters[i] <= 3)
- path[i] += path[j];
- else
- break;
- }
- }
- std::cout << "Arrangements: " << path[0] << std::endl;
- return 0;
- }
- int main()
- {
- int largest = 0;
- std::string text;
- while (getline(std::cin, text))
- {
- int a = atoi(text.c_str());
- if (a > largest)
- largest = a;
- adapters.push_back(a);
- }
- adapters.push_back(0);
- adapters.push_back(largest + 3);
- std::sort(adapters.begin(), adapters.end());
- return FindArrangements();
- }
Advertisement
Add Comment
Please, Sign In to add comment