Cod sursa(job #2516610)

Utilizator ioanasIoana S ioanas Data 1 ianuarie 2020 18:30:44
Problema Cowfood Scor 6
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <fstream>
#include <vector>

using namespace std;

int ways = 0;
vector<vector<int>> eg;
int kg, sg, ng;

vector<int> solg;
vector<int> sumg;

void rec(int pos) {
    if (pos == kg) {
        bool good_all = sumg[kg-1] < sg;
        if (good_all) {
            for (int i = 0; i < ng && good_all; ++i) {
                bool good = false;
                for (int j = 0; j < kg && !good; ++j)
                    if (solg[j] < eg[i][j]) good = true;
                if (!good) good_all = false;
            }
            if (good_all) ways++;
        }
        return;
    }

    if (pos) {
        for (int i = 1; i <= sg - sumg[pos-1]; ++i) {
            solg[pos] = i;
            sumg[pos] = sumg[pos-1] + i;
            rec(pos+1);
        }
    } else {
        for (int i = 1; i < sg; ++i) {
            solg[0] = i;
            sumg[0] = i;
            rec(1);
        }
    }
}

int main() {
    ifstream in ("cowfood.in");
    ofstream out ("cowfood.out");

    int k, s, n;
    in >> k >> s >> n;
    vector<vector<int>> e (n, vector<int>(k));
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < k; ++j)
            in >> e[i][j];
    eg = e;
    kg = k; sg = s; ng = n;

    vector<int> sol(k);
    vector<int> sum(k);
    solg = sol;
    sumg = sum;

    rec(0);
    out << ways;
}