Pagini recente » Cod sursa (job #2176286) | Cod sursa (job #2976255) | Cod sursa (job #2331550) | Cod sursa (job #1479460) | Cod sursa (job #2746329)
#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=i;j<n;j++)
for(int k=j;k<n;k++)
{
SumaCrt = Nr[i] + Nr[j] + Nr[k];
Jumate[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;
}
}
fout<<-1;
jump:
fin.close();
fout.close();
return 0;
}