Cod sursa(job #541995)

Utilizator stef2503Stefan Stan stef2503 Data 25 februarie 2011 17:30:43
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 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);
    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;
}