Cod sursa(job #229211)

Utilizator c_e_manuEmanuel Cinca c_e_manu Data 9 decembrie 2008 18:18:05
Problema Loto Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb
#include<cstdio>
#include<algorithm>

using namespace std;


int sum[1000001],l;

struct poz{int sum,x,y,z;}p[1000001];

bool operator<(const poz &a, const poz &b)
{       return (a.sum<b.sum);}

int bsearch(int x)
{
        int st=1,dr=l,mid;
        while(st<=dr)
        {       mid=(st+dr)/2;
                if(x==p[mid].sum) return mid;
                if(x>p[mid].sum)
                        st=mid+1;
                else    dr=mid-1;
        }
        return 0;
}
int main()
{       register int a[101],k,i,n,s,j,m;
        freopen("loto.in","r",stdin);
        freopen("loto.out","w",stdout);
        scanf("%d%d",&n,&s);
        for(i=1;i<=n;++i)
                scanf("%d",&a[i]);
        for(i=1;i<=n;++i)
                for(j=1;j<=n;++j)
                        for(k=1;k<=n;++k)
                                p[++l].sum=a[i]+a[j]+a[k],
                                p[l].x=i,p[l].y=j,p[l].z=k;
        sort(p+1,p+l);
        for(i=1;i<=l;++i)
        {       m=bsearch(s-p[i].sum);
                if(m!=0)
                {       printf("%d %d %d %d %d %d",a[p[i].x],a[p[i].y],a[p[i].z],a[p[m].x],a[p[m].y],a[p[m].z]);
                        return 0;
                }
        }
        printf("-1");
        return 0;
}