Cod sursa(job #189833)

Utilizator stefysStefan stefys Data 18 mai 2008 16:39:04
Problema Loto Scor 10
Compilator c Status done
Runda Arhiva de probleme Marime 1.43 kb
#include <stdio.h>
#include <stdlib.h>

int comp (const void *v1, const void *v2)
{
	unsigned int v1a = *(unsigned int*)v1;
	unsigned int v2a = *(unsigned int*)v2;
	if (v1a < v2a) return -1;
	else if (v1a == v2a) return 0;
	else return 1;
}

int main (void)
{
	freopen("loto.in", "r", stdin);	
	freopen("loto.out", "w+", stdout);
	
	unsigned int sum, N, S, *val, i;
	unsigned int n1, n2, n3, n4, n5, n6, sum6, sum5, sum4, sum3, sum2,foundsol=0;
	scanf("%u %u", &N, &S);
	val = malloc(sizeof(unsigned int)*N);
	for (i=0; i<N; ++i)
		scanf("%u",val+i);
	qsort((void*)val, N, sizeof(unsigned int), comp);
	for (n6=0; n6<N && !foundsol; ++n6) {
		sum6 = val[n6];
		if (sum6 > S) continue;
		for (n5=0; n5<N && !foundsol; ++n5) {
			sum5 = sum6+val[n5];
			if (sum5 > S) continue;
			for (n4=0; n4<N && !foundsol; ++n4) {
				sum4 = sum5+val[n4];
				if (sum4 > S) continue;
				for (n3 = 0; n3<N && !foundsol; ++n3) {
					sum3 = sum4+val[n3];
					if (sum3 > S) continue;
					for (n2 = 0; n2<N && !foundsol; ++n2) {
						sum2 = sum3+val[n2];
						if (sum2 > S) continue;
						for (n1 = 0; n1<N && !foundsol; ++n1) {
							sum = sum2+val[n1];
							if (sum == S) {
								foundsol = 1;
								printf("%u %u %u %u %u %u\n",
									val[n1],val[n2],val[n3],val[n4],val[n5],val[n6]);
							}
						}
					}
				}
			}
		}
	}
	if (!foundsol) printf("-1\n");
	fclose(stdin);
	fclose(stdout);
	return 0;
}