Cod sursa(job #3130601)

Utilizator CostyRoCostin Ionescu CostyRo Data 18 mai 2023 03:20:18
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.53 kb
#include <iostream>
#include <vector>
#include <fstream>
#include <unordered_map>
#include <algorithm>

std::ifstream in_file("loto.in");
std::ofstream out_file("loto.out");

std::vector<int> find_winning_numbers(int sum,const std::vector<int>& numbers){
  std::vector<int> winningNumbers;
  std::unordered_map<int,std::vector<int>> combinations;

  for(int first : numbers){
    for(int second : numbers){
      for(int third : numbers){
        combinations[first+second+third]={first,second,third};
      }
    }
  }

  for(auto combination : combinations){
    if(combinations.find(sum-combination.first)!=combinations.end()){
      winningNumbers.push_back(combination.second[0]);
      winningNumbers.push_back(combination.second[1]);
      winningNumbers.push_back(combination.second[2]);
      winningNumbers.push_back(combinations[sum-combination.first][0]);
      winningNumbers.push_back(combinations[sum-combination.first][1]);
      winningNumbers.push_back(combinations[sum-combination.first][2]);
      return winningNumbers;
    }
  }

  winningNumbers.push_back(-1);
  return winningNumbers;
}

int main(){

  int n,sum;
  in_file>>n>>sum;

  std::vector<int> numbers(n);
  for (int i=0;i<n;++i) {
    in_file>>numbers[i];
  }

  std::vector<int> winning_numbers=find_winning_numbers(sum,numbers);
  std::sort(winning_numbers.begin(),winning_numbers.end());

  for(const int& number : winning_numbers) {
    out_file<<number<<" ";
  }

  in_file.close();
  out_file.close();

  return 0;
}