Pagini recente » Cod sursa (job #1105465) | Cod sursa (job #187703) | Cod sursa (job #953920) | Cod sursa (job #2493660) | Cod sursa (job #429640)
Cod sursa(job #429640)
#include <cstdio>
#include <vector>
#include <utility>
using namespace std;
#define HASH 666013
#define MAX 100
struct tri{
int i,j,sum;
};
typedef vector<pair<int,int> >::iterator iter;
vector<pair<int,int> > hash[HASH];
vector<tri> s;
int n,sum,nr[MAX];
iter findHash(int suma){
int a=suma%HASH;
for(iter it=hash[a].begin();it!=hash[a].end();it++){
if(it->second==suma){
return it;
}
}
return hash[a].end();
}
void addHash(pair<int,int> e){
int a=e.second%HASH;
if(findHash(e.second)==hash[a].end()){
hash[a].push_back(e);
}
}
int findID(int s){
iter it=findHash(s);
if(it!=hash[s%HASH].end()){
return it->first;
}else{
return -1;
}
}
int main(){
FILE* fin=fopen("loto.in","r");
freopen("loto.out","w",stdout);
fscanf(fin,"%d %d ",&n,&sum);
for(int i=0;i<n;i++){
fscanf(fin,"%d ",&nr[i]);
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
tri t;
t.i=i,t.j=j,t.sum=nr[i]+nr[j];
addHash(make_pair(s.size(),t.sum));
s.push_back(t);
}
}
bool fnd=false;
for(int i=0;i<s.size()&&!fnd;i++){
for(int j=0;j<s.size()&&!fnd;j++){
int k=findID(abs(sum-s[i].sum-s[j].sum));
if(k!=-1){
printf("%d %d %d %d %d %d\n",nr[s[i].i],nr[s[i].j],
nr[s[j].i],nr[s[j].j],
nr[s[k].i],nr[s[k].j]);
fnd=true;
}
}
}
if(!fnd){
printf("-1\n");
}
fclose(fin);
return 0;
}