Pagini recente » Autentificare | Cod sursa (job #509431) | Cod sursa (job #997556) | Viata de dupa olimpiade (partea III) | Cod sursa (job #2785685)
#include<bits/stdc++.h>
using namespace std;
ifstream F("loto.in");
ofstream G("loto.out");
struct S {
int t,x,y,z;
};
int n,i,j,k,m,s,v[101],e,q;
S r[1000001];
int C(S a,S b)
{
return a.t<b.t;
}
int main()
{
for(F>>n>>s,i=1;i<=n;++i)
F>>v[i];
for(i=1;i<=n;++i)
for(j=i;j<=n;++j)
for(k=j;k<=n;++k)
r[++e].t=v[i]+v[j]+v[k],r[e].x=v[i],r[e].y=v[j],r[e].z=v[k];
sort(r+1,r+e+1,C);
for(q=1;q<e;q<<=1);
for(i=1;i<=e;++i) {
if(s<=r[i].t)
break;
for(j=0,m=q;m;m>>=1)
if(m+j<=e) {
if(r[j+m].t<s-r[i].t)
j+=m;
else if(r[j+m].t==s-r[i].t) {
G<<r[i].x<<" "<<r[i].y<<" "<<r[i].z<<" "<<r[j+m].x<<" "<<r[j+m].y<<" "<<r[j+m].z;
return 0;
}
}
}
G<<-1;
return 0;
}