Cod sursa(job #1180486)

Utilizator avaspAva Spataru avasp Data 30 aprilie 2014 18:22:21
Problema Loto Scor 5
Compilator cpp Status done
Runda lab10d30aprilie2014 Marime 1.14 kb
#include<cstdio>
#include<algorithm>
using namespace std;
int n,s,sum[1000001],v[101],cate,e1[1000001],e2[1000001],e3[1000001],cc;

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

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=1;j<=n;j++)
            for(k=1;k<=n;k++){
                cate++;
                sum[cate]=v[i]+v[j]+v[k];
                e1[cate]=v[i];
                e2[cate]=v[j];
                e3[cate]=v[k];
            }
    sort(sum+1,sum+cate+1);
    pp=0;
    for(i=1;i<=cate&&pp==0;i++){
        cc=caut(s-sum[i]);
        if(cc!=-1){
            pp=1;
            printf("%d %d %d %d %d %d",e1[i],e2[i],e3[i],e1[cc],e2[cc],e3[cc]);
        }
    }
    if(pp==0)
        printf("-1");
    return 0;
}