Cod sursa(job #595316)

Utilizator AllenSmailovic Alen Allen Data 11 iunie 2011 21:09:42
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <stdio.h>
#include <algorithm>

using namespace std;

struct tri
{int suma; int x; int y; int z;};

tri a[1000000];

int cmp (tri m, tri n)
{return m.suma<n.suma;}

int main ()
{
    freopen("loto.in", "r", stdin);
    freopen("loto.out", "w", stdout);

    int n, s, i, j, k, p, v[101];

    scanf("%d %d", &n, &s);

    for (i=1; i<=n; i++)
        scanf("%d", &v[i]);
    p=1;

    for (i=1; i<=n; i++)
    {
        for (j=i; j<=n; j++)
        {
            for (k=j; k<=n; k++)
            {
                a[p].suma=v[i]+v[j]+v[k];
                a[p].x=v[i];
                a[p].y=v[j];
                a[p].z=v[k];
                p++;
            }
        }
    }
    sort(a+1, a+p, cmp);
    int st, dr, x, t;
    for (i=1; i<p; i++)
    {
        st=1;
        dr=p;
        x=s-a[i].suma;
        while (st<=dr)
        {
            t=(st+dr)/2;
            if (x==a[t].suma)
            {
                printf ("%d %d %d %d %d %d", a[i].x, a[i].y, a[i].z, a[t].x, a[t].y, a[t].z);
                return 0;
            }
            else
            {
                if (x<a[t].suma)
                    dr=t-1;
                else
                    st=t+1;
            }
        }
    }
    printf("-1");
    return 0;
}