Cod sursa(job #176369)

Utilizator bogdanhm999Casu-Pop Bogdan bogdanhm999 Data 11 aprilie 2008 09:37:11
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 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=i;j<=n;j++)
            for (k=j;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;   
}