Pagini recente » Cod sursa (job #1797807) | Cod sursa (job #757691) | Cod sursa (job #3197083) | Cod sursa (job #2190497) | Cod sursa (job #813356)
Cod sursa(job #813356)
#include<cstdio>
#include<vector>
#define mod 699967
using namespace std;
long long x;
vector <long long> hash[mod];
long long v[101];
int findx ( long long x)
{
long long i,index=x%mod;
for (i=0;i<hash[index].size();++i)
if (x==hash[index][i])
return 1;
return 0;
}
void insertx (long long x)
{
long long i,index=x%mod;
if (!findx(x)) hash[index].push_back(x);
}
int main()
{
long long s;
long long i,j,k,sp=0;
int n;
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
scanf("%d %lld",&n,&s);
for (i=1;i<=n;++i)
scanf("%lld",&v[i]);
for (i=1;i<=n;++i)
for (j=1;j<=n;++j)
for (k=1;k<=n;++k)
{ x=v[i]+v[j]+v[k];
if (x<s)
if (!findx(x))
insertx(x);
}
int ok=1;
for (i=1;i<=n&&ok;++i)
for (j=1;j<=n&&ok;++j)
for (k=1;k<=n&&ok;++k)
{
sp=v[i]+v[j]+v[k];
if (findx(s-sp)) {ok=0; printf("%lld %lld %lld ",v[i],v[j],v[k]);s=s-sp;}
}
if (ok==0)
{
for (i=1;i<=n;++i)
for (j=1;j<=n;++j)
for (k=1;k<=n;++k)
{
sp=v[i]+v[j]+v[k];
if ((s==sp)&&findx(sp)) printf("%lld %lld %lld ",v[i],v[j],v[k]);
}
}
else printf("-1\n");
}