Pagini recente » Cod sursa (job #1231921) | Cod sursa (job #1144609) | Cod sursa (job #126496) | Cod sursa (job #8642) | Cod sursa (job #2580929)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("loto.in");
ofstream out ("loto.out");
const int N=101;
const int NN=1000001;
const int K=666019;
int v[N],lst[K+1],val[NN],urm[NN],nr,n;
bool apartine (int x)
{
int c=x%K;
for (int p=lst[c];p!=0;p=urm[p])
{
if (val[p]==x)
return true;
}
return false;
}
void adauga (int x)
{
if (apartine(x))
return;
int c=x%K;
val[++nr]=x;
urm[nr]=lst[c];
lst[c]=nr;
}
bool fnd (int x)
{
int c=x%K;
for (int p=lst[c];p!=0;p=urm[p])
{
if (val[p]==x)
return true;
}
return false;
}
void refac (int x)
{
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
for (int k=1;k<=n;k++)
{
if (v[i]+v[j]+v[k]==x)
{
out<<v[i]<<' '<<v[j]<<' '<<v[k];
return;
}
}
}
int main()
{
int x,s;
in>>n>>s;
for (int i=1;i<=n;i++)
{
in>>v[i];
}
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
for (int k=1;k<=n;k++)
{
adauga (v[i]+v[j]+v[k]);
}
//bool t=true;
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
for (int k=1;k<=n;k++)
{
if (fnd (s-v[i]-v[j]-v[k]))
{
out<<v[i]<<' '<<v[j]<<' '<<v[k]<<' ';
refac (s-v[i]-v[j]-v[k]);
return 0;
}
}
out<<-1;
return 0;
}