Pagini recente » Cod sursa (job #69582) | Cod sursa (job #964630) | Cod sursa (job #495027) | Cod sursa (job #2081213) | Cod sursa (job #135290)
Cod sursa(job #135290)
#include <stdio.h>
long int n,x[100],a[10000],s,m;
void isort(void)
{
long int i,j,v;
for(i=1;i<n;i++)
{
j=i-1;
v=a[i];
while((j>=0)&&(a[j]>v))
a[j+1]=a[j--];
a[j+1]=v;
}
}
long int cauta(long int y,long int pas,long int p)
{
pas/=2;
if(a[p]<y)
p=p+pas/2;
else
if(a[p]>y)
p=p-pas/2;
else
if(a[p]==y)
return a[p];
if(pas==0)
return -1;
else
return cauta(y,pas,p);
}
int main()
{
long int i,j,k,p,z,sp;
FILE *f;
f=fopen("loto.in","rt");
fscanf(f,"%d %ld",&n,&s);
for(i=0;i<n;i++)
fscanf(f,"%ld",&x[i]);
fclose(f);
f=fopen("loto.out","wt");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
for(k=0;k<n;k++)
a[m++]=x[i]+x[j]+x[k];
for(p=0;p<m;p++)
{
z=cauta(s-a[p],m,m/2);
if(z!=-1)
{
sp=1;
for(i=0;(i<n)&&sp;i++)
for(j=0;(j<n)&&sp;j++)
for(k=0;(k<n)&&sp;k++)
if((x[i]+x[j]+x[k])==a[p])
sp=0;
fprintf(f,"%ld %ld %ld",x[i],x[j],x[k-1]);
for(i=0;(i<n)&&sp;i++)
for(j=0;(j<n)&&sp;j++)
for(k=0;(k<n)&&sp;k++)
if((x[i]+x[j]+x[k])==(s-a[i]))
sp=0;
fprintf(f," %ld %ld %ld",x[i],x[j],x[k-1]);
fclose(f);
return 0;
}
}
fprintf(f,"-1");
fclose(f);
return 0;
}