Pagini recente » Cod sursa (job #864297) | Cod sursa (job #2519587) | Cod sursa (job #41386) | Cod sursa (job #2924383) | Cod sursa (job #2739978)
#include <iostream>
#include <fstream>
#include <unordered_map>
#include <vector>
#include <tuple>
using namespace std;
int main() {
ifstream in("loto.in");
ofstream out("loto.out");
int n, S, x, i, j, k;
vector<int> numere;
// unordered_map<int, vector<int>> myhash;
unordered_map<int, tuple<int, int, int>> myhash;
in>>n>>S;
for(i=0; i<n; i++)
{
in>>x;
numere.push_back(x);
}
for(i=0; i<n; i++)
for(j=i; j<n; j++)
for(k=j; k<n; k++)
{
int suma=numere[i]+numere[j]+numere[k];
if(suma<=S){
// { vector<int> elemente_suma;
// elemente_suma.push_back(numere[i]);
// elemente_suma.push_back(numere[j]);
// elemente_suma.push_back(numere[k]);
// myhash[suma] = elemente_suma;
myhash[suma]=make_tuple(numere[i], numere[j], numere[j]);
}
}
// for(auto &elem:myhash)
// {cout<<elem.first<<" ";
// for(int i=0; i<elem.second.size(); i++)
// cout<<elem.second[i]<<" ";
// cout<<"\n";}
for(i=0; i<n; i++)
for(j=i; j<n; j++)
for(k=j; k<n; k++)
{
if(myhash.find(S-numere[i]-numere[j]-numere[k])!=myhash.end())
{
out<<numere[i]<<" "<<numere[j]<<" "<<numere[k]<<" "<<get<0>(myhash[S-numere[i]-numere[j]-numere[k]])<<" "<<get<1>(myhash[S-numere[i]-numere[j]-numere[k]])<<" "<<get<2>(myhash[S-numere[i]-numere[j]-numere[k]]);
i=n; j=n; k=n;
}
}
if(i==n)
out<<-1;
return 0;
}