Cod sursa(job #318909)

Utilizator funkydvdIancu David Traian funkydvd Data 29 mai 2009 21:33:56
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <stdio.h>
#include <stdlib.h>
int n,s,a[110],b[1001000];
int cmp(const void *p, const void *q)
{
      return ( *(int*)p - *(int*)q );
}
void scrie(int x)
{
int i,j,k;
for (i=1; i<=n; ++i)
 for (j=i; j<=n; ++j)
   for (k=j; k<=n; ++k)
     if (a[i]+a[j]+a[k]==b[x])
      {
	 printf("%d %d %d ",a[i],a[j],a[k]);
	 return;
      }
}
int main()
{
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
scanf("%d%d",&n,&s);
int i,j,k,l;
for (i=1; i<=n; ++i) scanf("%d",&a[i]);
l=0;
for (i=1; i<=n; ++i)
 for (j=i; j<=n; ++j)
  for (k=j; k<=n; ++k)
   b[++l]=a[i]+a[j]+a[k];
qsort(b+1,l, sizeof(int),cmp);
k=l;
for (i=1; i<=l && 0<k; ++i)
{
  while(b[i]+b[k]>s && k>0) k--;
  if (k<=0) break;
  if (b[i]+b[k]==s) 
  {   
       scrie(i);     
       scrie(k);      
       return 0;   
  } 
}
printf("-1\n");
return 0;
}