Pagini recente » Cod sursa (job #1733502) | Cod sursa (job #2267839) | Cod sursa (job #2557233) | Cod sursa (job #2853058) | Cod sursa (job #1370262)
#include <stdio.h>
#include <unordered_map>
#include <vector>
#define VECTOR_SIZE 100
#define FIN "loto.in"
#define FOUT "loto.out"
struct vector3{ int i,j,k; };
int N,S;
int v[VECTOR_SIZE];
FILE *in,*out;
int sol[6];
void loto(){
int max = v[0];
for(int i=1; i < N; i++) max = max<v[i]?v[i]:max;
if(6*max < S){
v[0] = -1;
return;
}
std::unordered_map<int,vector3> hashTable;
for(int i=0; i < N; i++){
for(int j=0; j < N; j++){
for(int k=0; k < N; k++){
vector3 aux {v[i],v[j],v[k]};
hashTable[v[i]+v[j]+v[k]] = aux;
}
}
}
bool found = false;
vector3 *first,*second;
for(auto it = hashTable.begin(); it != hashTable.end(); ++it){
int aux = it->first;
first = &(it->second);
try{
second = &(hashTable.at(S-aux));
found = true;
break;
}catch(std::out_of_range o){}
}
if(!found){
sol[0] = -1;
} else {
sol[0] = first->i;
sol[1] = first->j;
sol[2] = first->k;
sol[3] = second->i;
sol[4] = second->j;
sol[5] = second->k;
}
}
int main(){
in = fopen(FIN, "rt");
out = fopen(FOUT, "wt");
int res;
res = fscanf(in, "%d%d", &N, &S);
for(int i=0; i < N; i++){
res = fscanf(in, "%d", &v[i]);
}
res++;
loto();
if(sol[0] == -1){
fprintf(out, "-1");
} else {
for(int i=0; i < 6; i++){
fprintf(out, "%d ", sol[i]);
}
}
fclose(in);
fclose(out);
return 0;
}