Cod sursa(job #882336)

Utilizator 5t3fristea stefan 5t3f Data 19 februarie 2013 00:28:38
Problema Loto Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
// loto.cpp : Defines the entry point for the console application.
//

//#include "stdafx.h"
#include "fstream"
#include "algorithm"
using namespace std;
int ok=1;
struct suma
{
	int va,e1,e2,e3;
}s[1000005];
ifstream f("loto.in");
ofstream g("loto.out");
int cautare_binara(int nr,int suma,int p)
{
	int pr=0,u=nr-1,m;
	if(s[u].va<suma)
		return 0;
	while(pr<=u)
	{
		m=(pr+u)/2;
		if(s[m].va==suma)
			return m;
		if(s[m].va<suma)
			pr=m+1;
		else
			u=m-1;
	}
	return 0;
}
int cmp(suma p1,suma p2)
{
	return p1.va<p2.va;
}
int main()
{
	int nr,suma,sir[105],sume;
	f>>nr>>suma;
	int i;
	for(i=0;i<nr;i++)
		f>>sir[i];
	int j,k,nrs=0;
	for(j=0;j<nr;j++)
		for(k=j;k<nr;k++)
			for(i=k;i<nr;i++)
			{
				s[nrs].e1=sir[j];
				s[nrs].e2=sir[k];
				s[nrs].e3=sir[i];
				s[nrs].va=sir[j]+sir[k]+sir[i];
				nrs++;
			}
	sort(s,s+nrs,cmp);
	for(i=0;i<nrs;i++)
	{
		int rez;
		rez=cautare_binara(nrs,suma-s[i].va,i);
		if(rez!=0)
		{
			g<<s[i].e1<<" "<<s[i].e2<<" "<<s[i].e3<<" "<<s[rez].e1<<" "<<s[rez].e2<<" "<<s[rez].e3;
			break;
			return 0;
		}
	}
	g<<"-1";
	return 0;
}