Pagini recente » Cod sursa (job #437986) | Cod sursa (job #856702) | Cod sursa (job #626672) | Cod sursa (job #598820) | Cod sursa (job #863446)
Cod sursa(job #863446)
#include<cstdio>
#include<vector>
#include<ext/hash_set>
using namespace std;
#define Nmax 101
__gnu_cxx::hash_set<int> H;
int n, S, aux[Nmax];
vector<int> sol;
int main()
{
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
int i, j, k, s;
scanf("%d %d",&n,&S);
for(i=1; i<=n; i++)
scanf("%d",&aux[i]);
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
for(k=1; k<=n; k++)
{
s = aux[i] + aux[j] + aux[k];
if(s < S)
H.insert(s);
}
s = -1;
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
for(k=1; k<=n; k++)
{
s = aux[i] + aux[j] + aux[k];
if(H.find(S-s) != H.end())
{
sol.push_back(aux[i]);
sol.push_back(aux[j]);
sol.push_back(aux[k]);
S-=s;
i = j = k = n+1;
}
}
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
for(k=1; k<=n; k++)
{
s = aux[i] + aux[j] + aux[k];
if(S == s)
{
printf("%d %d %d ",aux[i],aux[j],aux[k]);
for(vector<int>:: iterator it=sol.begin(); it!=sol.end(); ++it)
printf("%d ",*it);
return 0;
}
}
printf("-1\n");
return 0;
}