Pagini recente » Cod sursa (job #2086925) | Cod sursa (job #3284545) | Cod sursa (job #1784916) | Cod sursa (job #826717) | Cod sursa (job #1765752)
#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],n;
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,int i,int j,int k)
{
if(!caut(s))
{
val[++m]=s;
baza[m]=i*n*n+j*n+k;
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 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=i;j<n && !ok;j++)
for(k=j;k<n && !ok;k++)
if(v[i]+v[j]+v[k]<s)
{
add(v[i]+v[j]+v[k],i,j,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;
}