Pagini recente » Cod sursa (job #3162486) | Cod sursa (job #430538) | Cod sursa (job #1843760) | Cod sursa (job #2775497) | Cod sursa (job #220206)
Cod sursa(job #220206)
#include<stdio.h>
#define nmax 666013
FILE *f=fopen("loto.in","r"), *g=fopen("loto.out","w");
struct nod{ int x; nod *leg;} *H[nmax];
int n,i,j,k,l,m,o,a[101],ok,s;
inline void insert(int v)
{
int h=v%nmax;
nod *t=new nod;
t->x=v;
t->leg=H[h];
H[h]=t;
}
inlint int find(int v)
{
int h=v%nmax;
nod *p;
for(p=H[h];p->leg;p=p->leg)
if(p->x == v) {return 1; break;}
return 0;
}
int main()
{
fscanf(f,"%d %d",&n,&s);
for(i=1;i<=n;i++) fscanf(f,"%d",&a[i]);
for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
for(k=j;k<=n;k++)
insert(a[i]+a[j]+a[k]);
for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
for(k=j;k<=n;k++)
if(s-a[i]-a[j]-a[k]>=0)
if(find(s-a[i]-a[j]-a[k])
{
fprintf(g,"%d %d %d ",a[i],a[j],a[k]);
for(l=1;l<=n;l++)
for(m=l;m<=n;m++)
for(o=m;o<=n;o++)
if(a[l]+a[m]+a[o]==s-a[i]-a[j]-a[k])
{fprintf(g,"%d %d %d\n",a[l],a[m],a[o]);
ok=1;
break;}
}
if(!ok) fprintf(g,"-1\n");