Pagini recente » Cod sursa (job #231120) | Cod sursa (job #198146) | Cod sursa (job #2403838) | Cod sursa (job #1202540) | Cod sursa (job #51783)
Cod sursa(job #51783)
#include<stdio.h>
int n,i,i1,i2,i3,i4,i5,i6;
long int x[101],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(i=n/2;i>=1;i--)
heapdown(i,n);
for(i=n;i>=1;i--)
{ aux=x[i];x[i]=x[1];x[1]=aux;
heapdown(1,i-1);
}
if(6*x[n]<s||6*x[1]>s){fprintf(g,"-1\n");fcloseall();return 0;}
for(i1=1;(i1<=n)&&(6*x[i1]<=s);i1++)
for(i2=i1;(i2<=n)&&(x[i1]+5*x[i1]<=s);i2++)
for(i3=i2;(i3<=n)&&(x[i1]+x[i2]+4*x[i3]<=s);i3++)
for(i4=i3;i4<=n;i4++)
for(i5=i4;i5<=n;i5++)
for(i6=i5;i6<=n;i6++)
{ t=x[i1]+x[i2]+x[i3]+x[i4]+x[i5]+x[i6];
if(t==s)
{ fprintf(g,"%ld %ld %ld %ld %ld %ld\n",x[i1],x[i2],x[i3],x[i4],x[i5],x[i6]);
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&&x[2*ic+1]>x[2*ic])is=2*ic+1;
if(x[is]>x[ic]){aux=x[is],x[is]=x[ic];x[ic]=aux;heapdown(is,nc);}
return 0;
}