Pagini recente » Cod sursa (job #735262) | Cod sursa (job #2434867) | Cod sursa (job #1475312) | Cod sursa (job #829005) | Cod sursa (job #1088022)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
int N,S,v[110],nr;
struct point{int val,i,j,k;}w[1000099];
bool cmp(const point &A,const point &B)
{
return A.val<B.val;
}
int CB(int val)
{
int i, step;
for (step = 1; step <= nr; step <<= 1);
for (i = 1; step; step >>= 1)
if (i + step <= nr && w[i + step].val <= val)
i += step;
if(w[i].val==val)return i;
else return 0;
}
int main()
{
f>>N>>S;
for(int i=1;i<=N;++i)f>>v[i];
sort(v+1,v+1+N);
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]<S)
{
w[++nr].val=v[i]+v[j]+v[k];
w[nr].i=i,w[nr].j=j,w[nr].k=k;
}
sort(w+1,w+1+nr,cmp);
for(int i=1;i<=N;++i)
for(int j=1;j<=N;++j)
for(int k=1;k<=N;++k)
{
int poz=CB(S-v[i]-v[j]-v[k]);
if(poz)
{
g<<v[i]<<" "<<v[j]<<" "<<v[k]<<" "<<v[w[poz].i]<<" "<<v[w[poz].j]<<" "<<v[w[poz].k]<<'\n';
return 0;
}
}
g<<-1<<'\n';
return 0;
}