Cod sursa(job #1180527)

Utilizator avaspAva Spataru avasp Data 30 aprilie 2014 18:44:24
Problema Loto Scor 100
Compilator cpp Status done
Runda lab10d30aprilie2014 Marime 1.25 kb
#include<cstdio>
#include<algorithm>
using namespace std;
int n,s,v[101],cate,cc;

struct suu{int sum,e1,e2,e3;};
suu ss[1000001];

int caut(int x){
    int l1,l2;
    l1=1;
    l2=cate;
    while(l1<=l2){
        if(ss[(l1+l2)/2].sum==x)
            return ((l1+l2)/2);
        if(ss[(l1+l2)/2].sum>x)
            l2=(l1+l2)/2-1;
        else
            l1=(l1+l2)/2+1;
    }
    return -1;
}

bool sortez(const suu A,const suu B){
    return A.sum<B.sum;
}

int main(){
    int i,j,k,pp;
    freopen("loto.in","r",stdin);
    freopen("loto.out","w",stdout);
    scanf("%d%d",&n,&s);
    for(i=1;i<=n;i++)
        scanf("%d",&v[i]);
    cate=0;
    for(i=1;i<=n;i++)
        for(j=i;j<=n;j++)
            for(k=j;k<=n;k++){
                cate++;
                ss[cate].sum=v[i]+v[j]+v[k];
                ss[cate].e1=v[i];
                ss[cate].e2=v[j];
                ss[cate].e3=v[k];
            }
    sort(ss+1,ss+cate+1,sortez);
    pp=0;
    for(i=1;i<=cate&&pp==0;i++){
        cc=caut(s-ss[i].sum);
        if(cc!=-1){
            pp=1;
            printf("%d %d %d %d %d %d",ss[i].e1,ss[i].e2,ss[i].e3,ss[cc].e1,ss[cc].e2,ss[cc].e3);
        }
    }
    if(pp==0)
        printf("-1");
    return 0;
}