Cod sursa(job #575499)

Utilizator GaborGabrielFMI - GabrielG GaborGabriel Data 8 aprilie 2011 13:23:58
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream.h>
#include <algorithm>
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
int n,s,v[101];
int i,j,k,sf=0,valoare,nimic,st,dr,mij;
struct nod
{
	int nr;
	int a,b,c;
} vs[1000001];

int cautare_binara(int stanga, int k)
{
	st=stanga;
	dr=sf;
	
	while(st<=dr)
	{
		mij=(st+dr)/2;
		nimic = vs[k].nr+vs[mij].nr;
		if(nimic==s)
		{
			g<<vs[k].a<<' '<<vs[k].b<<' '<<vs[k].c<<' '<<vs[mij].a<<' '<<vs[mij].b<<' '<<vs[mij].c<<'\n';
			return 1;
		}
		else
			if(nimic<s)
				dr=mij-1;
			else
				if(nimic>s)
					st=mij+1;
	}
	return 0;
}

int main()
{	
	f>>n>>s;
	for(i=1;i<=n;i++)	
		f>>v[i];
	sort(v+1,v+n+1);
	for(i=1;i<=n;i++)
		for(j=i;j<=n;j++)
			for(k=j;k<=n;k++)
			{
				vs[++sf].nr=v[i]+v[j]+v[k];
				vs[sf].a = v[i];
				vs[sf].b = v[j];
				vs[sf].c = v[k];
			}	
	for(i=1;i<=sf;i++)
	{		
		if(cautare_binara(i+1,i))
			break;
	}
	if(i>sf)
			g<<-1<<'\n';
	f.close();
	g.close();
	return 0;
}