Cod sursa(job #69442)

Utilizator zobicaMarin Marin zobica Data 3 iulie 2007 00:37:30
Problema Loto Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include<fstream>

using namespace std;

long a[100],T,x;
ofstream fout("loto.out");

short n;

void citire(){
	ifstream fin("loto.in");
	fin>>n>>T;
	for (short i=0;i<n;i++)
		fin>>a[i];
	fin.close();
}

void bule(){
	short ok=0,p=n;
	while(ok==0){
		ok=1;
		p--;
		for (short i=0;i<p;i++)
			if (a[i]>a[i+1]){
				long aux=a[i];
				a[i]=a[i+1];
				a[i+1]=aux;
				ok=0;}
	}
}
int caut(long x, int o){
	int st=o, dr=n - 1;
	while (st<=dr){
		int m=(st+dr)/2;
		if (a[m]==x)
			return 1;
		if (a[m]<x)
			st=m+1;
		dr=m-1;
	}
	return 0;
}

int parc(){
	for (short i = 0; i < n; i++)
		for (short j = i; j < n; j++)
			for (short k=j; k < n; k++)
				for (short l=k; l < n; l++)
					for (short o=l; o < n; o++){
						x=T-a[i]-a[j]-a[k]-a[l]-a[o];
						if (caut(x, o)){
							fout<<a[i]<<" "<<a[j]<<" "<<a[k]<<" "<<a[l]<<" "<<a[o]<<" "<<x<<"\n";
							return 1;
						}
					}
	return 0;
}

int main(){
	citire();
	bule();
	if (!parc())
		fout<<"-1";
	fout.close();
	return 0;
}