Pagini recente » Cod sursa (job #1157901) | Cod sursa (job #869642) | Cod sursa (job #568819) | Cod sursa (job #959367) | Cod sursa (job #735973)
Cod sursa(job #735973)
#include<fstream>
#include<algorithm>
#include<vector>
#define n1 102
#define n2 10002
#define n3 1000005
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
struct ob
{
int w;int e;int r;int t;};
ob b[n3];
int i, j, v[n1], a[3][n2] , n, S, k, Nr, poz ,ok =0;
int sol[7];
int bs(int x)
{
int p =1, u = Nr;
int m;
while( p <= u)
{
m = ( p+ u )/2;
if(x >= b[m].w)
p = m + 1;
else
u = m - 1;
}
m = (p + u)/2;
if(x<b[m].w)
--m;
if(x==b[m].w)
return m;
return 0;
}
bool cmp (ob a, ob q)
{
if(a.w>q.w)
return 0;
return 1;
}
void read()
{
int l;
fin >>n >>S;
for(i = 1 ;i <= n; i++)
fin>> v[i];
sort(v + 1, v+ n + 1);
for(i =1; i <= n ;i++)
{
for(j = i ; j <= n; j++)
{
for( l = j ; l <= n; l++)
{
b[++Nr].w = v[i] + v[j] + v[l];
b[Nr].e = v[i];
b[Nr].r = v[j];
b[Nr].t = v[l];
}
}
}
sort(b + 1 ,b + 1 +Nr,cmp);
//for(i = 1 ;i <= Nr; i++)
// fout << b[0][i]<<" ";
for(i = 1 ;i <= Nr; i++)
{
poz = bs(S - b[i].w);
if( poz)
{
fout<< b[i].e <<" " <<b[i].r <<" "<<b[i].t ;
fout<<" " << b[poz].e <<" " <<b[poz].r <<" " <<b[poz].t;
ok = 1;
break;
}
}
if(!ok)
fout << -1;
}
int main()
{
read();
fin.close();
fout.close();
return 0;
}