Pagini recente » Cod sursa (job #1022927) | Cod sursa (job #1462948) | Cod sursa (job #272025) | Cod sursa (job #2378418) | Cod sursa (job #1691982)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
int n,s,v[101]={},st[7]={},sum=0;
bool unwritten=true;
void write()
{
for(int i=1;i<=6;i++)
out<<v[st[i]]<<' ';
}
int Sum()
{
int x=0;
for(int i=1;i<=6;i++)
x+=v[st[i]];
return x;
}
void bsearch(int lvl)
{
int start=1,end=n;
int mid=(start+end)/2;
st[lvl]=mid;
while(start<=end)
{
mid=(start+end)/2;
if(lvl<6)
bsearch(lvl+1);
sum=Sum();
if(sum<s)
{
start=mid+1;
st[lvl]=mid;
}
else if(sum>s)
{
end=mid-1;
st[lvl]=mid;
}
else if(sum==s)
{
if(unwritten)
{
write();
unwritten=false;
}
break;
}
}
}
void Read()
{
in>>n>>s;
for(int i=1;i<=n;i++)
in>>v[i];
sort(v+1,v+n);
}
int main()
{
Read();
bsearch(1);
if(unwritten)
out<<-1;
return 0;
}