Pagini recente » Cod sursa (job #3147656) | Cod sursa (job #1238730) | Cod sursa (job #1039087) | Cod sursa (job #491943) | Cod sursa (job #1369934)
#include <stdio.h>
#include <map>
#define VECTOR_SIZE 100
#define FIN "loto.in"
#define FOUT "loto.out"
using namespace std;
struct vector3{
int i,j,k;
};
int N,S;
int v[VECTOR_SIZE];
int sume[VECTOR_SIZE*VECTOR_SIZE*VECTOR_SIZE];
FILE *in,*out;
int sol1[6],sol2[6];
void bruteForce(){
for(int i=0; i < N; i++){
for(int j=0; j < N; j++){
for(int k=0; k < N; k++){
for(int l=0; l < N; l++){
for(int o=0; o < N; o++){
for(int p=0; p < N; p++){
if(S == v[i] + v[j] + v[k] + v[l] + v[o] + v[p]){
sol1[0] = v[i];
sol1[1] = v[j];
sol1[2] = v[k];
sol1[3] = v[l];
sol1[4] = v[o];
sol1[5] = v[p];
return;
}
}
}
}
}
}
}
sol1[0] = -1;
}
void loto(){
std::map<int,vector3> hashTable;
for(int i=0,s=0; i < N; i++){
for(int j=0; j < N; j++){
for(int k=0; k < N; k++,s++){
vector3 aux {v[i],v[j],v[k]};
hashTable[v[i]+v[j]+v[k]] = aux;
//sume[s] = v[i]+v[j]+v[k];
}
}
}
for(std::map<int,vector3>::iterator it = hashTable.begin(); it != hashTable.end(); ++it){
printf("%d:(%d,%d,%d)\n", it->first, (it->second).i,(it->second).j,(it->second).k);
}
bool found = false;
vector3 first,second;
for(std::map<int,vector3>::iterator it = hashTable.begin(); it != hashTable.end(); ++it){
//printf("%d:(%d,%d,%d)\n", it->first, (it->second).i,(it->second).j,(it->second).k);
int aux = it->first;
first = it->second;
try{
second = hashTable.at(S-aux);
found = true;
break;
}catch(std::out_of_range o){}
}
if(!found){
sol2[0] = -1;
} else {
sol2[0] = first.i;
sol2[1] = first.j;
sol2[2] = first.k;
sol2[3] = second.i;
sol2[4] = second.j;
sol2[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();
for(int i=0; i < 6; i++){
printf("%d ", sol2[i]);
}
fclose(in);
fclose(out);
return 0;
}