Pagini recente » Cod sursa (job #91415) | Cod sursa (job #370686) | Cod sursa (job #3267265) | Cod sursa (job #2100236) | Cod sursa (job #2746290)
#include <iostream>
#include <fstream>
#include <unordered_map>
#include <vector>
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
unordered_map<int, tuple<int,int,int>> Jumate; // Un dictionar de forma (x+y+z, {x,y,z}) unde stocam toate sumele a 3
// termeni diferiti,tuplul fiind utilizat pentru afisarea raspunsului
vector<int> Nr;
int main()
{
int n,s,nr,SumaCrt;
fin>>n>>s;
for (int i=0;i<n;i++)
{
fin>>nr;
Nr.push_back(nr);
}
for (int i=0;i<n;i++)
for (int j=0;j<n;j++)
for(int k=0;k<n;k++)
{
SumaCrt = Nr[i] + Nr[j] + Nr[k];
if (Jumate.find(s - SumaCrt) != Jumate.end()) // Am mai gasit cealalta jumatate deja, afisam cele 3 elemente curente + tuplul de la pozitia jumatatii
{
fout<<Nr[i]<<' '<<Nr[j]<<' '<<Nr[k]<<' '<<get<0>(Jumate[s-SumaCrt])<<' '<<get<1>(Jumate[s-SumaCrt])<<' '<<get<2>(Jumate[s-SumaCrt]);
goto jump;
}
Jumate[SumaCrt] = {Nr[i],Nr[j],Nr[k]};
}
fout<<-1;
jump:
fin.close();
fout.close();
return 0;
}