Pagini recente » Cod sursa (job #1423687) | Cod sursa (job #2952723) | Cod sursa (job #2344036) | Cod sursa (job #990374) | Cod sursa (job #2658599)
#include <stdio.h>
#include <vector>
using namespace std;
// 1017932
const int NMAX = 100;
const int MOD = 666013;
struct ura {
int a,b,c;
int s;
};
vector <ura> h[MOD];
int find_hash(int suma) {
int cod=suma%MOD;
unsigned int i=0;
while(i<h[cod].size() && h[cod][i].s!=suma)
i++;
return i<h[cod].size()?i:-1;
}
void add_hash(ura x) {
int cod=x.s%MOD;
unsigned int i=0;
while(i<h[cod].size() && h[cod][i].s!=x.s)
i++;
if(i==h[cod].size())
h[cod].push_back(x);
}
int v[NMAX];
int main() {
FILE *fin,*fout;
int n,s,ok,i,j,k,suma;
fin=fopen("loto.in","r");
fscanf(fin,"%d%d",&n,&suma);
for(i=0;i<n;i++)
fscanf(fin,"%d",&v[i]);
fclose(fin);
ok=-1;
fout=fopen("loto.out","w");
for(i=0;i<n && ok<0;i++)
for(j=0;j<n && ok<0;j++)
for(k=0;k<n && ok<0;k++) {
s=v[i]+v[j]+v[k];
add_hash({v[i],v[j],v[k],s});
if(s<=suma) {
ok=find_hash(suma-s);
if(ok>=0) {
int cod=(suma-s)%MOD;
fprintf(fout,"%d %d %d %d %d %d\n",v[i],v[j],v[k],h[cod][ok].a,h[cod][ok].b,h[cod][ok].c);
}
}
}
if(ok<0)
fprintf(fout,"-1");
fclose(fout);
return 0;
}