Pagini recente » Cod sursa (job #301210) | Cod sursa (job #105312) | Cod sursa (job #3277755) | Cod sursa (job #1299386) | Cod sursa (job #383585)
Cod sursa(job #383585)
#include<stdio.h>
using namespace std;
#define DIM 100
long long s,suma,A[DIM],V[7],S;
int i,ok,p,c,x,n;
int quicksort(int inceput,int ultimul)
{int i,j,temp,aux;
i=inceput;
j=ultimul;
temp=A[(i+j)/2];
do
{while(A[i]<temp) i++;
while(A[j]>temp) j--;
if(i<j)
{aux=A[i]; A[i]=A[j]; A[j]=aux; }
if(i<=j)
{j=j-1;
i=i+1;
}
}while(i<=j);
if(inceput<j) quicksort(inceput,j);
if(i<ultimul) quicksort(i,ultimul);
}
long caut_bin(long in,long sf)
{long mij;
mij=(in+sf)/2;
if(in>sf) return A[in-1];
if(A[mij]==s) return A[mij];
else if(A[mij]<s) return caut_bin(mij+1,sf);
else return caut_bin(in,mij-1);
}
int main()
{
FILE *f=fopen("loto.in","r"), *g=fopen("loto.out","w");
fscanf(f,"%d %lld",&n,&suma);
for(i=1;i<=n;i++)
fscanf(f,"%d",&A[i]);
quicksort(1,n);
c=n; p=1; s=suma;
while(!ok)
{s=suma;
V[p]=A[c];
s-=V[p];
for(i=p+1;i<=6;i++)
{x=caut_bin(1,n);
s-=x; V[i]=x;
if(s==0&&i==6) { ok=2; break;}
else if(s<=0) {ok=1; break;}
}
if(ok==0)
fprintf(g,"-1\n");
else if(ok==2)
{
for(i=1;i<=6;i++)
A[i]=V[i];
quicksort(1,6);
for(i=1;i<=6;i++)
fprintf(g,"%ld ",A[i]);
fprintf(g,"\n");
}
else if(ok==1)
{if(c<=1)
{p++; c=n-1;}
else c--;
ok=0;}
}
fclose(f);
fclose(g);
return 0;
}