Pagini recente » Cod sursa (job #2722532) | Cod sursa (job #2954515) | Cod sursa (job #3162680) | Cod sursa (job #1023736) | Cod sursa (job #1452900)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
int v[150],i,j,n,m,s,ans[ 10 ];
bool stop = false,nothing;
bool Solve( int niv, int sum, int ls, int ld )
{
int mij = ( ls + ld ) / 2;
int mySum;
while( ls != ld )
{
mij = ( ls + ld ) / 2;
if( stop )
break;
ans[ niv ] = v[ mij ];
mySum = sum + ans[ niv ];
if( niv == 6 )
{
if( mySum < s )
ls = mij + 1;
else
ld = mij - 1;
if( mySum == s )
{
stop = true;
break;
}
}
else
{
if( Solve( niv + 1 , mySum , 1 , n ) )
{
ls = mij + 1;
}
else
{
ld = mij - 1;
}
}
}
mij = ( ls + ld ) / 2;
if( niv == 6 )
{
if( sum + v[ mij ] == s )
{
stop = true;
ans[ niv ] = v[ mij ];
}
}
if( stop )
{
fout<<ans[ niv ]<<' ';
return true;
}
if( mySum < s )
return true;
else
return false;
}
int main()
{
fin>>n>>s;
for( i = 1 ; i <= n ; ++i )
{
fin>>v[ i ];
}
sort( v + 1 , v + 1 + n );
nothing = Solve( 1 , 0 , 1 , n );
if( !stop )
fout<<"-1";
return 0;
}