Cod sursa(job #976010)

Utilizator rzvrzvNicolescu Razvan rzvrzv Data 22 iulie 2013 12:04:26
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
#include<fstream>
#include<cstdio>
#include<algorithm>

using namespace std;

int s,n,a[112];
struct loto
{
    int s,x1,x2,x3;
};
loto v[1000005];
bool cmp (loto x,loto y)
{
    return x.s<y.s;
}

int main ()
{
    freopen("loto.in","r",stdin);
    freopen("loto.out","w",stdout);
    scanf("%d %d\n",&n,&s);
    int i,posib=0;
    for (i=0;i<n;i++)
        scanf ("%d",&a[i]);
    int j,k;
    for (i=0; i<n;i++)
        for (j=i;j<n;j++)
            for (k=j;k<n;k++)
            {
                v[posib].s=a[i]+a[j]+a[k];
                v[posib].x1=a[i];
                v[posib].x2=a[j];
                v[posib].x3=a[k];
                posib++;
            }
    sort(v,v+posib,cmp);
    int st,dr,m,suma;
    for (i=0; i<posib; i++)
    {
        st=0;
        dr=posib-1;
        suma=s-v[i].s;
        while (st<=dr)
        {
            m=(st+dr)/2;
            if (v[m].s==suma)
            {
                printf("%d %d %d %d %d %d\n",v[i].x1,v[i].x2,v[i].x3,v[m].x1,v[m].x2,v[m].x3);
                return 0;
            }
            else
                if (v[m].s<suma)
                    st=m+1;
                else
                    dr=m-1;
        }
    }
    printf ("-1\n");
    return 0;
}