Cod sursa(job #135285)

Utilizator nimicLeoveanu Mihaita Alexandru nimic Data 13 februarie 2008 14:09:38
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <cstdio>
#include <algorithm>

using namespace std;

int a[100], nr[1<<20], n, s, N;

int main(){
	freopen("loto.in", "r", stdin);
	freopen("loto.out", "w", stdout);
	scanf("%d %d", &n, &s);
	for (int i=0; i<n; i++)
		scanf("%d ", a+i);
	for (int i=0; i<n; i++)
		for (int j=i; j<n; j++)
			for (int k=j; k<n; k++)
				nr[N++] = a[i]+a[j]+a[k];
	sort(nr, nr+N);
	for (int i=0; i<n; i++)
		for (int j=i; j<n; j++)
			for (int k=j; k<n; k++){
				int poz = 0;
				for (int pow=1<<19; pow; pow/=2)
					if (poz+pow<N && nr[poz+pow]<=s-a[i]-a[j]-a[k]) poz += pow;
				if (nr[poz]!=s-a[i]-a[j]-a[k]) continue;
				for (int p1=0; p1<n; p1++)
					for (int p2=p1; p2<n; p2++)
						for (int p3=p2; p3<n; p3++)
							if (a[p1]+a[p2]+a[p3] == nr[poz]){
								printf("%d %d %d %d %d %d", a[i], a[j], a[k], a[p1], a[p2], a[p3]);
								return 0;
							}
			}
	printf("-1");
}