Pagini recente » Cod sursa (job #405528) | Cod sursa (job #199168) | Cod sursa (job #1774252) | Cod sursa (job #516712) | Cod sursa (job #1805162)
#include <cstdio>
#define MOD 46563
using namespace std;
struct comb{
int a, b, c, sum;
comb* next;
};
comb *h[MOD];
void add(comb *val){
int pos = val->a + val->b + val->c;
if(h[pos%MOD]==NULL){
h[pos%MOD] = val;
return;
}
comb* crt = h[pos%MOD];
h[pos%MOD] = val;
h[pos%MOD]->next=crt;
/*while(crt->next!=NULL){
crt = crt->next;
}*/
//crt->next = val;
}
comb* get(int sum){
if(sum<0 || h[sum%MOD] == NULL)return NULL;
int mod = sum==0?0:sum%MOD;
comb* crt = h[mod];
while(crt!=NULL){
if(crt->sum == sum){
return crt;
}
crt = crt->next;
}
return NULL;
}
int main()
{
//ifstream in("loto.in");
FILE* f = fopen("loto.in", "r");
int n, s, v[100];
//in>>n>>s;
fscanf(f, "%d %d", &n, &s);
for(int i=0;i<n;i++){
//in>>v[i];
fscanf(f, "%d", &v[i]);
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
for(int k=0;k<n;k++){
add(new comb{v[i], v[j], v[k], v[i]+v[j]+v[k], NULL});
}
}
}
//ofstream out("loto.out");
FILE *f1 = fopen("loto.out", "w");
comb *c;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
for(int k=0;k<n;k++){
if((c=get(s-v[i]-v[j]-v[k]))!=NULL){
//out<<v[i]<<" "<<v[j]<<" "<<v[k]<<" "<<c->a<<" "<<c->b<<" "<<c->c;
fprintf(f1, "%d %d %d %d %d %d", v[i], v[j], v[k], c->a, c->b, c->c);
return 0;
}
}
}
}
//out<<-1;
fprintf(f1, "-1");
return 0;
}