Cod sursa(job #542931)

Utilizator feelshiftFeelshift feelshift Data 27 februarie 2011 11:26:31
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <stdio.h>
#include <algorithm>
using namespace std;

struct stuff {
    int sum;
	int first; int second; int third;
};

stuff sum[1000000];

int cmp (stuff m, stuff n)
{
    return m.sum<n.sum;
}

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++) {
                sum[p].sum=v[i]+v[j]+v[k];
                sum[p].first=v[i];
                sum[p].second=v[j];
                sum[p].third=v[k];
                p++;
            }

    sort(sum+1, sum+p, cmp);

    int st, dr, x, t;
    for (i=1; i<p; i++) {
        st=1;
        dr=p;
        x=s-sum[i].sum;
        while (st<=dr) {
            t=(st+dr)/2;
            if (x==sum[t].sum) {
                printf ("%d %d %d %d %d %d", sum[i].first, sum[i].second, sum[i].third, sum[t].first, sum[t].second, sum[t].third);
                return 0;
            } else {
                if (x<sum[t].sum)
                    dr=t-1;
                else
                    st=t+1;
            }
        }
    }

    printf("-1");
    return 0;
}