Pagini recente » Cod sursa (job #1089157) | Cod sursa (job #1949367) | Cod sursa (job #1994532) | Cod sursa (job #2746802) | Cod sursa (job #524481)
Cod sursa(job #524481)
#include<stdio.h>
FILE *in,*out;
int n,s,V[101],VS[101*101*101],i,j,k;
int afis(int a)
{
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
for(k=1;k<=n;k++)
if(V[i]+V[j]+V[k]==a)
{
fprintf(out,"%d %d %d",V[i],V[j],V[k]);
return 0;
}
}
void Quicksort (int data[],int left,int right) {
int mid,tmp,i,j;
i = left;
j = right;
mid = data[(left + right)/2];
do {
while(data[i] < mid)
i++;
while(mid < data[j])
j--;
if (i <= j) {
tmp = data[i];
data[i] = data[j];
data[j] = tmp;
i++;
j--;
}
} while (i <= j);
if (left < j) Quicksort(data,left,j);
if (i < right) Quicksort(data,i,right);
}
int main()
{
in=fopen("loto.in","rt");
out=fopen("loto.out","wt");
fscanf(in,"%d %d",&n,&s);
for(i=1;i<=n;i++)
fscanf(in,"%d",&V[i]);
int cont=0;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
for(k=1;k<=n;k++)
VS[++cont]=V[i]+V[j]+V[k];
Quicksort(VS,1,cont);
int sp=cont;
int ft=1;
while(ft<=sp)
{
while(VS[ft]+VS[sp]>s && sp>0)
sp--;
if(VS[ft]+VS[sp]==s)
{
afis(VS[ft]);
fprintf(out," ");
afis(VS[sp]);
fprintf(out,"\n");
return 0;
}
if(sp<=0)
break;
while(VS[ft]+VS[sp]<s && ft<=cont)
ft++;
}
return 0;
}