Pagini recente » Cod sursa (job #1341460) | Cod sursa (job #217693) | Cod sursa (job #1546386) | Cod sursa (job #3261427) | Cod sursa (job #1765679)
#include <stdio.h>
#define MAX_N 1000000
#define MOD 702113
int v[100],hash[MOD],val[MAX_N+1],next[MAX_N+1],m,baza[MAX_N+1];
inline int caut(int x)
{
int p=hash[x%MOD];
while(p && val[p]!=x)
p=next[p];
return p;
}
inline void add(int s)
{
if(!caut(s))
{
val[++m]=s;
next[m]=hash[s%MOD];
hash[s%MOD]=m;
}
}
int main()
{
FILE *fin,*fout;
fin=fopen("loto.in","r");
fout=fopen("loto.out","w");
int n,s,i,j,k,p;
char ok=0;
fscanf(fin,"%d%d",&n,&s);
for(i=0;i<n;i++)
fscanf(fin,"%d",&v[i]);
for(i=0;i<n && !ok;i++)
for(j=0;j<n && !ok;j++)
for(k=0;k<n && !ok;k++)
if(v[i]+v[j]+v[k]<s)
{
add(v[i]+v[j]+v[k]);
baza[m]=i*n*n+j*n+k;
if((p=caut(s-v[i]-v[j]-v[k])))
{
fprintf(fout,"%d %d %d %d %d %d",v[(baza[p]/(n*n))],v[(baza[p]/n)%n],v[baza[p]%n],v[i],v[j],v[k]);
ok=1;
}
}
if(!ok)
fprintf(fout,"-1");
fclose(fin);
fclose(fout);
return 0;
}