Pagini recente » Cod sursa (job #2787802) | Cod sursa (job #2174106) | Cod sursa (job #772260) | Cod sursa (job #2826085) | Cod sursa (job #2746339)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
int n,s,i,j,k,x,curr_sum;
vector<int> nbrs;
unordered_map<int, vector<int> > Hashm;
int main(){
fin>>n>>s;
for(int i = 0; i < n; i++){
fin>>x;
nbrs.push_back(x);
}
for(i=0;i<nbrs.size();++i){
for(j=i;j<nbrs.size();++j){
for(k=j;k<nbrs.size();++k){ //backtracking pt toate combinatiile de n numere
curr_sum = nbrs[i] + nbrs[j] + nbrs[k]; //adunam combinatia curenta
Hashm[curr_sum] = {nbrs[i],nbrs[j],nbrs[k]}; //si punem in hash numerele corespunzatoare combinatiei curente
if(Hashm.find(s-curr_sum) != Hashm.end()){ //daca gasim complementara sumei curente in hash
fout<<nbrs[i]<<" "<<nbrs[j]<<" "<<nbrs[k]<<" "<<Hashm[s-curr_sum][0]<<" "<<Hashm[s-curr_sum][1]<<" "<<Hashm[s-curr_sum][2];
return 0; //una dintre soluii a fost gasita deci putem iesi din main
}
}
}
}
fout<<-1; // nu au fost gasite solutii deci este afisai -1
fin.close();
fout.close();
return 0;
}