Pagini recente » Cod sursa (job #750381) | Cod sursa (job #3167583) | Cod sursa (job #2186228) | Cod sursa (job #1883244) | Cod sursa (job #1708732)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
typedef struct tip
{
unsigned long i,j,k,val;
} TIP;
int a[101],poz=0;
TIP b[1000010];
int n,s;
int k[7];
bool ret(TIP a,TIP b)
{
return a.val<b.val;
}
int main()
{
in>>n>>s;
for (int i=1; i<=n; i++)
in>>a[i];
for (int i=1; i<=n; i++)
for (int j=i; j<=n; j++)
for (int k=j; k<=n; k++)
{
poz++;
b[poz].val=a[i]+a[j]+a[k];
b[poz].i=i;
b[poz].j=j;
b[poz].k=k;
}
sort(b+1,b+poz+1,ret);
bool ok=1;
for (int i=1; i<=poz && b[i].val<=s; i++)
{
int st=0;
int dr=poz;
int mij;
while (st<=dr)
{
mij=(st+dr)/2;
if (b[mij].val==s-b[i].val)
{
k[1]=a[b[i].i];
k[2]=a[b[i].j];
k[3]=a[b[i].k];
k[4]=a[b[mij].i];
k[5]=a[b[mij].j];
k[6]=a[b[mij].k];
ok=0;
break;
}
else
{
if (b[mij].val>s-b[i].val)
dr=mij-1;
else
st=mij+1;
}
}
if (ok==0)
break;
}
if (ok==1)
out<<-1;
else
{
sort(k+1,k+7);
for (int i=1; i<=6; i++)
out<<k[i]<<' ';
}
return 0;
}