Pagini recente » Cod sursa (job #3198399) | Cod sursa (job #2217921) | Cod sursa (job #2414063) | Cod sursa (job #418659) | Cod sursa (job #459761)
Cod sursa(job #459761)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
typedef struct nr{
long int t1;
long int t2;
long int t3;
long int s;
};
nr sol[162000];
int L,i,j,k;
long long Sum,V[101];
bool cmp(nr a,nr b){return a.s<b.s;}
int main ()
{
int N;
in>>N>>Sum;
for(i=0;i<N;i++)
in>>V[i];
for(i=0;i<N;i++)
for(j=i;j<N;j++)
for(k=j;k<N;k++)
sol[L].s = V[i]+V[j]+V[k],sol[L].t1=V[i],sol[L].t2=V[j],sol[L++].t3=V[k];
sort(sol,sol+L,cmp);
long long val,step;
long long maxim;
for (maxim = 1; maxim < L; maxim <<= 1);
for(i=0;i<L;i++)
{
step = maxim;
val = Sum-sol[i].s;
for (j = 0; step; step >>= 1)
if (j + step < L && sol[j + step].s <= val)
j += step;
if(sol[j].s==val)
{
out<<sol[i].t1<<' '<<sol[i].t2<<' '<<sol[i].t3<<' '<<sol[j].t1<<' '<<sol[j].t2<<' '<<sol[j].t3<<'\n';
out.close();
return 0;
}
}
out<<"-1\n";
out.close();
return 0;
}