Pagini recente » Cod sursa (job #1290175) | Cod sursa (job #2253392) | Cod sursa (job #2234009) | Cod sursa (job #3193939) | Cod sursa (job #267750)
Cod sursa(job #267750)
// loto.cpp : Defines the entry point for the console application.
//
#include <stdio.h>
#include <stdlib.h>
int e[104],suma;
int n;
int ep[7],o=1;
struct interval
{
int a,b,c,d;
};
interval f[1000001];
int compar(const void * a,const void * b)
{
return ( *(int*)a - *(int*)b );
}
void cautb(FILE *f2)
{
int dr,st,mij,rez,b=0;
for(int i=1;i<=o;i++)
{
st=i;
dr=o;
while(st<=dr)
{
mij=st+(dr-st)/2;
if(f[mij].a+f[i].a==suma)
{
ep[1]=f[i].b;
ep[2]=f[i].c;
ep[3]=f[i].d;
ep[4]=f[mij].b;
ep[5]=f[mij].c;
ep[6]=f[mij].d;
qsort(ep,7,sizeof(int),compar);
for(int j=1;j<=7-1;j++)
fprintf(f2,"%d ",ep[j]);
b=1;
break;
}
else if(f[mij].a+f[i].a>suma)
dr=mij-1;
else
st=mij+1;
}
if(b==1)
break;
}
if(b==0)
fprintf(f2,"-1");
}
int main()
{
int i,j,l,k,p;
bool c=false;
FILE *f1,*f2;
f1=fopen("loto.in","r");
f2=fopen("loto.out","w");
fscanf(f1,"%d %d",&n,&suma);
for(i=1;i<=n;i++)
fscanf(f1,"%d",&e[i]);
qsort(e,n+1,sizeof(int),compar);
for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
for(l=j;l<=n;l++)
{
f[o].a=e[i]+e[j]+e[l];
f[o].b=e[i];
f[o].c=e[j];
f[o].d=e[l];
o++;
}
qsort(f+3,n+1,sizeof(f[0]),compar);
cautb(f2);
fclose(f1);
fclose(f2);
return 0;
}