Cod sursa(job #349808)

Utilizator zloteanu.adrianzloteanu adrian nichita zloteanu.adrian Data 21 septembrie 2009 16:32:33
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<stdio.h>
#include<stdlib.h>
#include<fstream.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()
{
ifstream q("loto.in");
freopen("loto.out","w",stdout);
q>>n>>s;
int i,j,k,l;
for (i=1; i<=n; ++i)
q>>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;
}