Pagini recente » Cod sursa (job #8786) | Cod sursa (job #2649187) | Cod sursa (job #3536) | Cod sursa (job #2901367) | Cod sursa (job #129195)
Cod sursa(job #129195)
#include <stdio.h>
#define sch(x,y) x^=y^=x^=y
#define nmax 200001
long int bal[nmax],a[101],n,s,sol=-1,b[7],m;
void recdw(long int i)
{
long int poz=i;
if(2*i<=m)
if(bal[2*i]>bal[poz])
poz=2*i;
if(2*i+1<=m)
if(bal[2*i+1]>bal[poz])
poz=2*i+1;
if(i!=poz)
{
sch(bal[i],bal[poz]);
recdw(poz);
}
}
int main()
{
FILE *fi=fopen("loto.in","r"),
*fo=fopen("loto.out","w");
fscanf(fi,"%ld %ld",&n,&s);
long int i,j,k,nr=0,r,c;
for(i=1;i<=n;i++)
{
fscanf(fi,"%ld",&a[i]);
}
fclose(fi);
for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
for(k=j;k<=n;k++)
bal[++nr]=a[i]+a[j]+a[k];
for(i=nr/2,m=nr;i;i--)
recdw(i);
for(i=nr,m=nr-1;i>1;i--,m--)
{
sch(bal[1],bal[i]);
recdw(1);
}
for(i=1,j=nr;i<=j;i++)
{
for(;bal[j]>s-bal[i];j--);
if(bal[j]+bal[i]==s)
sol=bal[j];
}
if(sol==-1)
fprintf(fo,"-1\n");
else
{
for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
for(k=j;k<=n;k++)
if(a[j]+a[i]+a[k]==sol)
{
b[3]=a[i];
b[4]=a[j];
b[5]=a[k];
}
sol=s-sol;
for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
for(k=j;k<=n;k++)
if(a[j]+a[i]+a[k]==sol)
{
b[0]=a[i];
b[1]=a[j];
b[2]=a[k];
}
for(i=0;i<=5;i++)
for(j=0;j<5;j++)
if(b[j]>b[j+1])
sch(b[j],b[j+1]);
for(i=0;i<=5;i++)
fprintf(fo,"%ld ",b[i]);
fprintf(fo,"\n");
}
fclose(fo);
return(0);
}