Cod sursa(job #849242)

Utilizator Athena99Anghel Anca Athena99 Data 6 ianuarie 2013 19:11:35
Problema Loto Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <cassert>
#include <cstdio>
#include <algorithm>

using namespace std;
int v[105];

struct str
{
    int s,t1,t2;
};
str d[1000005];

inline int comp(str x,str y)
{
    return x.s<y.s;
}

int main()
{
    int n=0,s=0,i=0,j=0,k=0,st=0,dr=0;

    assert(freopen("loto.in","r",stdin));
    assert(freopen("loto.out","w",stdout));

    assert(scanf("%d%d",&n,&s));
    for (i=0; i<n; ++i)
        assert(scanf("%d",&v[i]));

    for (i=0; i<n; ++i)
        for (j=0; j<n; ++j)
            for (k=0; k<n; ++k)
            {
                d[dr].s=v[i]+v[j]+v[k];
                d[dr].t1=v[i];
                d[dr].t2=v[j];
                ++dr;
            }

    sort(d,d+dr,comp);

    st=0;
    --dr;
    while (st<=dr)
    {
        if (d[st].s+d[dr].s==s)
            break;

        if (d[dr].s+d[dr].s<s || d[st].s+d[st].s>s)
        {
            st=dr+1;
            break;
        }

        if (d[st].s+d[dr].s<s)
            ++st;
        else
            --dr;
    }

    if (st<=dr)
        assert(printf("%d %d %d %d %d %d\n",d[st].s-d[st].t1-d[st].t2,d[st].t1,d[st].t2,d[dr].s-d[dr].t1-d[dr].t2,d[dr].t1,d[dr].t2));
    else
        assert(printf("-1\n"));

    return 0;
}