Cod sursa(job #613131)

Utilizator GavrilaVladGavrila Vlad GavrilaVlad Data 16 septembrie 2011 19:16:38
Problema Loto Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <cstdio>
#include <algorithm>

using namespace std;

#define maxn 110

int n, nr, sum, p2, v[maxn];
pair<int, pair<int, int> > s[maxn*maxn*maxn];

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

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

    for(int i=1; i<=n; ++i)
        for(int j=1; j<=n; ++j)
            for(int k=1; k<=n; ++k)
                s[++nr]=make_pair(v[i]+v[j]+v[k], make_pair(v[i], v[j]));

    s[++nr]=make_pair(-1000000000, make_pair(0, 0));
    s[++nr]=make_pair(1000000000, make_pair(0, 0));

    sort(s+1, s+nr+1);

    p2=nr;
    for(int i=2; i<nr; ++i)
    {
        while(s[i].first+s[p2].first>sum)
            --p2;

        if(s[i].first+s[p2].first==sum)
        {
            printf("%d %d %d %d %d %d\n", s[i].second.first, s[i].second.second, s[i].first-s[i].second.first-s[i].second.second,
                                          s[p2].second.first, s[p2].second.second, s[p2].first-s[p2].second.first-s[p2].second.second);
            return 0;
        }
    }

    printf("-1\n");

    return 0;
}