Pagini recente » Cod sursa (job #2469218) | Cod sursa (job #2418050) | Cod sursa (job #2654085) | Cod sursa (job #287155) | Cod sursa (job #2761235)
#include <iostream>
#include <fstream>
#include <deque>
#include <unordered_map>
using namespace std;
//int apartine(deque <int> dq, int nr)
//{
// for (int i=0; i<dq.size(); i++)
// {
// if(dq[i]==nr) {
// return 1;
// }
// }
// return 0;
//}
//
//int main() {
// int n, numere[101],s,x=-1;
// cin>>n>>s;
// for (int i=0;i<n;i++)
// {
// cin>>numere[i];
// }
// deque <int> valpos;
// for (int i=0; i<n; i++) {
// for (int j=i; j<n; j++) {
// for (int k=j; k<n; k++) {
// valpos.push_back(numere[i]+numere[j]+numere[k]);
// }
// }
// }
// for (int i=0; i<valpos.size(); i++)
// {
// if(apartine(valpos, s-valpos[i]))
// {
// x=valpos[i];
// break;
// }
// }
//
// if(x==-1)
// {
// cout<<-1;
// return 0;
// }
//
// cout<<endl;
// s = s-x;
// for (int i=0; i<n; i++)
// for (int j=0; j<n; j++)
// for (int k=0; k<n; k++)
// {
// if(x!=-1 && numere[i]+ numere[j]+numere[k]==x)
// {
// cout<<numere[i]<<" "<<numere[j]<<" "<<numere[k]<<" ";
// x = -1;
// }
// if(s!=-1 && numere[i]+ numere[j]+numere[k]==s)
// { cout<<numere[i]<<" "<<numere[j]<<" "<<numere[k]<<" ";
// s = -1;
// }
// }
//
//
// return 0;
//}
ifstream fin("loto.in");
ofstream fout("loto.out");
unordered_map <int, pair <pair<int,int> ,int> > valpos; //memoram tuplurile posibile (suma a cate 3)
int nr[105];
int n,suma;
int main()
{
fin >>n >> suma;
for (int i=0; i<n;i++)
fin >>nr[i];
for (int i=0; i <n; i++)
for (int j=0; j <n; j++)
for (int k=0; k<n; k++)
{
int s = nr[i] + nr[j] + nr[k]; // suma a celor 3 numere
valpos[s].first.first= nr[i];
valpos[s].first.second = nr[j];
valpos[s].second = nr[k];
// urmeaza sa cautam daca suma celor 3 nr posibile s are pereche ce completeaza pana la "suma"
//cautam suma-s
if (valpos.find(suma- s) != valpos.end())
{
fout << valpos[s].first.first << " " << valpos[s].first.second << " " << valpos[s].second << " "; // primele 3 nr ce alcatuiesc s
fout << valpos[suma- s].first.first << " "<< valpos[suma - s].first.second << " " << valpos[suma - s].second << " ";// ultimele 3 ce alcatuiesc suma-s
return 0;
}
}
fout << -1;
// for (int i=0; i<n ;i++)
// cout<<valpos[i].first.first<< " "<<valpos[i].first.second<<" "<<valpos[i].second<<" "<<endl;
return 0;
}