Cod sursa(job #459761)

Utilizator R.A.RFMI Romila Remus Arthur R.A.R Data 30 mai 2010 23:47:10
Problema Loto Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<fstream>
#include<algorithm>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
typedef struct nr{
	long int t1;
	long int t2;
	long int t3;
	long int s;
};
nr sol[162000];
int L,i,j,k;
long long Sum,V[101];
bool cmp(nr a,nr b){return a.s<b.s;}
int main ()
{
	int N;
	in>>N>>Sum;
	for(i=0;i<N;i++)
		in>>V[i];
	for(i=0;i<N;i++)
		for(j=i;j<N;j++)
			for(k=j;k<N;k++)
				sol[L].s = V[i]+V[j]+V[k],sol[L].t1=V[i],sol[L].t2=V[j],sol[L++].t3=V[k];
	sort(sol,sol+L,cmp);
	long long  val,step;
	long long maxim;
	for (maxim = 1; maxim < L; maxim <<= 1);
	for(i=0;i<L;i++)
	{
		step = maxim;
		val = Sum-sol[i].s;
		for (j = 0; step; step >>= 1)
			if (j + step < L && sol[j + step].s <= val)
				j += step;
		if(sol[j].s==val)
		{
			out<<sol[i].t1<<' '<<sol[i].t2<<' '<<sol[i].t3<<' '<<sol[j].t1<<' '<<sol[j].t2<<' '<<sol[j].t3<<'\n';
			out.close();
			return 0;
		}
	}
	out<<"-1\n";
	out.close();
	return 0;
}