Pagini recente » Cod sursa (job #2215342) | Cod sursa (job #1836833) | Cod sursa (job #720064) | Cod sursa (job #1659825) | Cod sursa (job #735963)
Cod sursa(job #735963)
#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");
int i, j, v[n1], a[3][n2] , b[4][n3], 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[0][m])
p = m + 1;
else
u = m - 1;
}
m = (p + u)/2;
if(x<b[0][m])
--m;
if(x==b[0][m])
return m;
return 0;
}
void read()
{
int l;
fin >>n >>S;
for(i = 1 ;i <= n; i++)
fin>> v[i];
for(i =1; i <= n ;i++)
{
for(j = i ; j <= n; j++)
{
for( l = j ; l <= n; l++)
{
b[0][++Nr] = v[i] + v[j] + v[l];
b[1][Nr] = v[i];
b[2][Nr] = v[j];
b[3][Nr] = v[l];
}
}
}
sort(b[0] + 1 ,b[0] + 1 +Nr);
//for(i = 1 ;i <= Nr; i++)
// fout << b[0][i]<<" ";
for(i = 1 ;i <= Nr; i++)
{
poz = bs(S - b[0][i]);
if( poz)
{
sol[1]= b[1][i] ;
sol[2] = b[2][i];
sol[3] = b[3][i];
sol[4] = b[1][poz];
sol[5] = b[2][poz];
sol[6] = b[3][poz];
ok = 1;
break;
}
}
sort(sol + 1, sol + 1 + 6);
if(!ok)
fout << -1;
else
for(i = 1; i<= 6; i++)
fout<<sol[i] <<" ";
}
int main()
{
read();
fin.close();
fout.close();
return 0;
}