Pagini recente » Borderou de evaluare (job #628617) | Cod sursa (job #1715086)
#include <cstdio>
#include <bitset>
#include <algorithm>
using namespace std;
int j,t,mid,p,u,aux,n,i,sum,s,nr,a[102],sol[8];
struct elem{
int s,a,b,c;
}su[1000002];
bool cmp(elem x,elem y){
return x.s<y.s;
}
int main()
{
freopen("loto.in", "r", stdin);
freopen("loto.out", "w", stdout);
scanf("%d%d", &n, &s);
for(i=1;i<=n;++i)
scanf("%d", &a[i]);
for(i=1;i<=n;++i){
for(j=1;j<=n;++j){
for(t=1;t<=n;++t){
su[++nr].s=a[i]+a[j]+a[t];
su[nr].a=a[i];
su[nr].b=a[j];
su[nr].c=a[t];
}
}
}
sort(su+1,su+nr+1,cmp);
for(i=1;i<=nr;++i){
p=1;u=nr;
aux=s-su[i].s;
if(aux>0)
while(p<=u){
mid=(p+u)/2;
if(su[mid].s<aux) p=mid+1;
else if(su[mid].s>aux) u=mid-1;
else{
sol[1]=su[mid].a;
sol[2]=su[mid].b;
sol[3]=su[mid].c;
sol[4]=su[i].a;
sol[5]=su[i].b;
sol[6]=su[i].c;
sort(sol+1,sol+7);
for(i=1;i<=6;++i)
printf("%d ",sol[i]);
return 0;
}
}
}printf("-1");
return 0;
}