Cod sursa(job #445394)

Utilizator hendrikHendrik Lai hendrik Data 23 aprilie 2010 18:03:25
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.33 kb
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;

void open(){
	freopen("loto.in","r",stdin);
	freopen("loto.out","w",stdout);
}
#define pb push_back
#define sz size()
#define MOD 666013
struct pii{
	int x,y,z,sum;
	pii(){
	};
	pii(int _x,int _y,int _z,int _sum){
		x=_x;y=_y;z=_z;sum=_sum;
	};
};
typedef vector<pii>vii;
int n,s,x[101],suma,cnt,tmp;
vii hash[666013];

int main(){
	open();
	scanf("%d%d",&n,&s);
	for (int i=0;i<n;i++){
		scanf("%d",&x[i]);
	}
	sort(x,x+n);
	cnt=0;
	for (int i=0;i<n;i++){
		for (int j=0;j<n;j++){
			for (int k=0;k<n;k++){
				suma=x[i]+x[j]+x[k];
				if (suma>=s) break;
				int reg=suma%MOD;
				bool found=0;
				for (vii::iterator it=hash[reg].begin();it!=hash[reg].end();it++){
					if (it->sum==suma){
						found=1;break;
					}
				}
				if (found) continue;
				hash[reg].pb(pii(i,j,k,suma));
				suma=s-suma;
				reg=suma%MOD;
				found=0;
				int i1,j1,k1;
				for (vii::iterator it=hash[reg].begin();it!=hash[reg].end();it++){
					if (it->sum==suma){
						i1=it->x;
						j1=it->y;
						k1=it->z;
						found=1;break;
					}
				}
				if (found){
					printf("%d %d %d %d %d %d\n",x[i],x[j],x[k],x[i1],x[j1],x[k1]);
					return 0;
				}
			}
		}
	}
	printf("-1\n");
	return 0;
}