Cod sursa(job #130255)

Utilizator PavelRazvanPavel Razvan PavelRazvan Data 31 ianuarie 2008 18:08:49
Problema Loto Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
    #include <stdio.h>  
    #include <stdlib.h>  
      
    long n,s,i,j,k,q,a[103],s3[1000003],ind[1000003],nr1[1000003],nr2[1000003],nr3[1000003];  
      
   int comp(const void *n1, const void *n2){  
        return s3[*(long*)n1]-s3[*(long*)n2];  
    }  
      
   int main(){  
       freopen("loto.in","r",stdin);  
       freopen("loto.out","w",stdout);  
         
       scanf("%ld %ld",&n,&s);  
       for (i=1;i<=n;i++)  
          scanf("%ld",&a[i]);  
     
       for (i=1;i<=n;i++)  
           for (j=1;j<=n;j++)  
               for (k=1;k<=n;k++)  
                   {q++;ind[q]=q;s3[q]=a[i]+a[j]+a[k];nr1[q]=i;nr2[q]=j;nr3[q]=k;}  
       qsort(ind,q+1,sizeof(long),comp);  
       j=q;  
      for (i=1;i<=q;i++){  
           while (s3[ind[i]]+s3[ind[j]]>s&&j>0)j--;  
           if (!j>0)break;  
           if (s3[ind[i]]+s3[ind[j]]==s){  
              printf("%ld %ld %ld ",a[nr1[ind[i]]],a[nr2[ind[i]]],a[nr3[ind[i]]]);  
              printf("%ld %ld %ld\n",a[nr1[ind[j]]],a[nr2[ind[j]]],a[nr3[ind[j]]]);  
              return 0;  
           }  
       }  
       printf("-1\n");  
     
   return 0;     
}