Cod sursa(job #813324)

Utilizator brainwashed20Alexandru Gherghe brainwashed20 Data 15 noiembrie 2012 10:52:23
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include<cstdio>
#include<vector>
#include<ext/hash_set>

using namespace std;

#define Nmax 101

__gnu_cxx::hash_set<int> H;
int N, S, V[Nmax];
vector<int> sol;

int main() {
	
	freopen("loto.in","r",stdin);
	freopen("loto.out","w",stdout);
	
	int i, j, k, sum;
	scanf("%d %d",&N,&S);
	for(i=1; i<=N; i++)
		scanf("%d",&V[i]);
	
	for(i=1; i<=N; i++)
		for(j=1; j<=N; j++)
			for(k=1; k<=N; k++) {
				sum = V[i] + V[j] + V[k];
				if(sum < S)
					H.insert(sum);
			}
			
	sum = -1;
	for(i=1; i<=N; i++)
		for(j=1; j<=N; j++)
			for(k=1; k<=N; k++) {
				sum = V[i] + V[j] + V[k];
				if(H.find(S-sum) != H.end()) {
					sol.push_back(V[i]);
					sol.push_back(V[j]);
					sol.push_back(V[k]);
					//printf("%d %d %d",V[i],V[j],V[k]);
					S-=sum;
					i = j = k = N+1;
				}
			}
			
	for(i=1; i<=N; i++)
		for(j=1; j<=N; j++)
			for(k=1; k<=N; k++) {
				sum = V[i] + V[j] + V[k];
				if(S == sum) {
					printf("%d %d %d ",V[i],V[j],V[k]);
					for(vector<int>:: iterator it=sol.begin(); it!=sol.end(); ++it)
						printf("%d ",*it);
					return 0;
				}
			}
	printf("-1\n");
	
	return 0;
}