#include #include #include #include int find2(std::vector &numbers) { for(auto i = 0; i < numbers.size(); ++i) for(auto j = i + 1; j < numbers.size(); ++j) if(numbers[i] + numbers[j] == 2020) return numbers[i] * numbers[j]; return 0; } int find3(std::vector &numbers) { for(auto i = 0; i < numbers.size(); ++i) for(auto j = i + 1; j < numbers.size(); ++j) for(auto k = i + 1; k < numbers.size(); ++k) if(numbers[i] + numbers[j] + numbers[k] == 2020) return numbers[i] * numbers[j] * numbers[k]; return 0; } int main() { std::ifstream ifs("data"); if(!ifs.is_open()) { std::cerr << "Couldn't open file." << std::endl; return -1; } std::vector numbers; for(std::string line; std::getline(ifs, line); ) numbers.push_back(std::atoi(line.c_str())); std::cout << find2(numbers) << std::endl; std::cout << find3(numbers) << std::endl; return 0; }