Cod sursa(job #976655)

Utilizator thewildnathNathan Wildenberg thewildnath Data 23 iulie 2013 16:28:51
Problema Loto Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include<stdio.h>
#include<algorithm>
using namespace std;

typedef struct loto
{
    int v,a1,a2,a3;
}loto;

int v[101];
loto b[1000002];

int cmp(loto x,loto y)
{
    return x.v<y.v;
}

int main()
{
    freopen("loto.in","r",stdin);
    freopen("loto.out","w",stdout);
    int n,s,i,j,k,nr=0,st,dr,m;
    scanf("%d%d",&n,&s);
    for(i=1;i<=n;++i)
        scanf("%d",&v[i]);

    for(i=1;i<=n;++i)
        for(j=i;j<=n;++j)
            for(k=j;k<=n;++k)
            {
                ++nr;
                b[nr].v=v[i]+v[j]+v[k];
                b[nr].a1=v[i];
                b[nr].a2=v[j];
                b[nr].a3=v[k];
            }
    sort(b+1,b+1+n,cmp);

    for(i=1;i<=n;++i)
    {
        st=1;dr=nr;
        while(st<=dr)
        {
            m=(st+dr)/2;
            if(b[m].v+b[i].v==s)
            {
                printf("%d %d %d %d %d %d\n",b[i].a1,b[i].a2,b[i].a3,b[m].a1,b[m].a2,b[m].a3);
                return 0;
            }
            if(b[i].v+b[m].v<s)
                st=m+1;
            else
                dr=m-1;
        }
    }
    printf("-1\n");
    return 0;
}