Cod sursa(job #1691981)

Utilizator GabiTulbaGabi Tulba-Lecu GabiTulba Data 19 aprilie 2016 22:06:46
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <algorithm>
using namespace std;

ifstream in("test.in");
ofstream out("test.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;
}