Cod sursa(job #812052)

Utilizator gabipurcaruGabi Purcaru gabipurcaru Data 13 noiembrie 2012 12:28:38
Problema Loto Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;

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

int n,s,x[101],i,j,k,l,m,o;
vector<int> f[666014];
const int M = 666013;

inline void add_h(int v) {
    f[v%M].push_back(v);
}
inline bool in_h(int v) {
    if(v < 0)
        return false;
    for(vector<int>::iterator it=f[v%M].begin(), end=f[v%M].end(); it!=end; ++it) {
        if(*it == v)
            return true;
    }
    return false;
}

int main() {
    in>>n>>s;
    for(i=1; i<=n; i++) {
        in>>x[i];
        add_h(x[i]);
    }
    sort(x+1, x+n+1);
    if(x[1] * 6 > s || x[n] * 6 < s ) {
        out<<-1;
        return 0;
    }
    for(i=1; i<=n; i++)
        for(j=i; j<=n; j++)
            for(k=j; k<=n; k++)
                for(l=k; l<=n; l++)
                    for(m=l; m<=n; m++)
                        if(in_h(s-x[i]-x[j]-x[k]-x[l]-x[m])) {
                            out<<x[i]<<' '<<x[j]<<' '<<x[k]<<' '<<x[l]<<' '<<x[m]<<' '<<(s-x[i]-x[j]-x[k]-x[l]-x[m]);
                            return 0;
                        }
    out<<-1;
    return 0;
}