Pagini recente » Cod sursa (job #2107972) | Cod sursa (job #2355548) | Cod sursa (job #1478736) | Cod sursa (job #56623) | Cod sursa (job #51775)
Cod sursa(job #51775)
#include<stdio.h>
int n,i,i1,i2,i3,m,a[5600],b[5600],aux1;
long int x[101],y[5600],s,aux,t;
int heapdown(int ic,int nc);
int main()
{
FILE *f,*g;
f=fopen("loto.in","r");
g=fopen("loto.out","w");
fscanf(f,"%d",&n);
fscanf(f,"%ld",&s);
for(i=1;i<=n;i++)
fscanf(f,"%ld",&x[i]);
for(i1=1;i1<=n;i1++)
for(i2=i1;i2<=n;i2++)
{m++;y[m]=x[i1]+x[i2];a[m]=i1;b[m]=i2;}
for(i=m/2;i>=1;i--)
heapdown(i,m);
for(i=m;i>=1;i--)
{ aux=y[i];y[i]=y[1];y[1]=aux;
aux1=a[i];a[i]=a[1];a[1]=aux1;
aux1=b[i];b[i]=b[1];b[1]=aux1;
heapdown(1,i-1);
}
for(i1=1;(i1<=m)&&(3*y[i1]<=s);i1++)
for(i2=i1;(i2<=m)&&(y[i1]+2*y[i1]<=s);i2++)
for(i3=i2;(i3<=m)&&(y[i1]+y[i2]+y[i3]<=s);i3++)
{ t=y[i1]+y[i2]+y[i3];
if(t==s)
{ fprintf(g,"%ld %ld %ld %ld %ld %ld\n",x[a[i1]],x[b[i1]],x[a[i2]],x[b[i2]],x[a[i3]],x[b[i3]]);
fcloseall();
return 0;
}}
fprintf(g,"-1\n");
fcloseall();
return 0;
}
int heapdown(int ic,int nc)
{
int is;
if(2*ic>nc)return 0;
is=2*ic;
if(2*ic<nc&&y[2*ic+1]>y[2*ic])is=2*ic+1;
if(y[is]>y[ic]){aux=x[is],x[is]=x[ic];x[ic]=aux;
aux1=a[is];a[is]=a[ic];a[ic]=aux1;
aux1=b[is];b[is]=b[ic];b[ic]=aux1;heapdown(is,nc);}
return 0;
}