Cod sursa(job #1699592)

Utilizator panteapaulPantea Paul panteapaul Data 7 mai 2016 21:00:56
Problema Loto Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.52 kb
#include <iostream>
#include <fstream>
#include <deque>
#include <algorithm>

using namespace std;

int n, s;
int nrs[100];
int pairs[5050];
pair<int,int> indx[5050];

ifstream in("loto.in");
ofstream out("loto.out");

int main()
{
    bool sol = false;
    int a, b, c, d, e, f, x, i;
    int sa = 0, sb = 0, sc = 0, sd = 0, se = 0, sf = 0;
    in>>n>>s;

    for (i=0; i<n; i++) {
        in>>x;
        nrs[i] = x;
    }

    sort(nrs, nrs+n);

    i=0;
    for (a=0; a<n; a++) {
        for (b=a; b<n; b++) {
            pairs[i] = nrs[a] + nrs[b];
            indx[i] = pair<int,int>(a,b);
            i++;
        }
    }

    sort(pairs, pairs + n*(n+1)/2);

    for (a=0; a<n*(n+1)/2; a++) {
        sa = pairs[a];

        if (pairs[a] * 3 <= s)
        for (b=a; b<n*(n+1)/2; b++) {
            sb = sa + pairs[b];

            if (sa + pairs[b] * 2 <= s)
            for (c=b; c<n*(n+1)/2; c++) {
                sc = sb + pairs[c];

                if (sc == s) {
                    sol = true;
                    goto done;
                }
                else if (sc > s) {
                    break;
                }
            }
        }
    }

    done:
    if (!sol) {
        out<<-1;
    }
    else {
        out<<nrs[indx[a].first]<<" "<<nrs[indx[a].second]<<" ";
        out<<nrs[indx[b].first]<<" "<<nrs[indx[b].second]<<" ";
        out<<nrs[indx[c].first]<<" "<<nrs[indx[c].second]<<" ";
    }

    in.close();
    out.close();
    return 0;
}