Pagini recente » Cod sursa (job #408518) | Cod sursa (job #264858) | Cod sursa (job #2438302) | Cod sursa (job #713282) | Cod sursa (job #81187)
Cod sursa(job #81187)
#include <stdio.h>
#include <algorithm>
#define NMax 103
using namespace std;
long n, bb;
long p[NMax], db;
long a[NMax*NMax*NMax][3], e[NMax*NMax*NMax];
long S, pS, ppS, x[8];
long binary(long val)
{
long long i, step;
for (step = 1; step < db; step <<= 1);
for (i=0; step; step >>= 1)
if (i+step < db && e[i+step] <= val)
i+=step;
return i;
}
int main()
{
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
long i, j, k;
db=0;
scanf("%ld %ld", &n, &S);
for (i=1; i<=n; ++i)
scanf("%d", &p[i]);
for (i=1; i<=n; ++i)
for (j=1; j<=n; ++j)
for (k=1; k<=n; ++k)
{
e[++db]=p[i]+p[j]+p[k];
a[db][0]=i;
a[db][1]=j;
a[db][2]=k;
}
sort(e+1,e+db);
for (i=1; i<=n; ++i)
for (j=1; j<=n; ++j)
for (k=1; k<=n; ++k)
{
pS=p[i]+p[j]+p[k];
ppS=S-pS;
bb=binary(ppS);
pS+=e[bb];
if (S==pS)
{
x[1]=i;
x[2]=j;
x[3]=k;
x[4]=a[bb][0];
x[5]=a[bb][1];
x[6]=a[bb][2];
sort(x+1,x);
for (int l=1; l<=6; ++l)
printf("%ld ", x[l]);
fclose(stdin);
fclose(stdout);
return 0;
}
}
printf("-1\n");
fclose(stdin);
fclose(stdout);
return 0;
}