Cod sursa(job #813318)

Utilizator brainwashed20Alexandru Gherghe brainwashed20 Data 15 noiembrie 2012 10:37:48
Problema Loto Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include<cstdio>
#include<algorithm>

using namespace std;

#define Nmax 101

int V[Nmax], N, M, S;

struct bla {
	int i, j, k, sum;
} A[Nmax * Nmax * Nmax];

bool cmp(bla a, bla b) {
	return a.sum < b.sum;
}

int main() {
	
	freopen("loto.in","r",stdin);
	freopen("loto.out","w",stdout);
	
	int i, j, k, st, dr, mij, sum;
	
	scanf("%d %d",&N,&S);
	for(i=1; i<=N; i++) 
		scanf("%d",&V[i]);
	sort(V+1, V+N+1);
	
	for(i=1; i<=N; i++)
		for(j=1; j<=N; j++)
			for(k=1; k<=N; k++) {
				A[++M].sum = V[i] + V[j] + V[k];
				A[M].i = V[i];
				A[M].j = V[j];
				A[M].k = V[k];
			}
				
	//sort(A+1,A+M+1,cmp);
	
	for(i=1; i<=M; i++) {
		sum = S - A[i].sum;
		st = 1; dr = M;
		while(st<=dr) {
			mij = (st+dr)/2;
			if(A[mij].sum == sum) {
				printf("%d %d %d %d %d %d\n",A[i].i, A[i].j, A[i].k, A[mij].i, A[mij].j, A[mij].k);
				return 0;
			}
			if(A[mij].sum < sum) 
				st = mij + 1;
			else
				dr = mij - 1;
		}
	}
	
	printf("-1\n");
	
	return 0;
}