Cod sursa(job #3289543)

Utilizator Andercau_VasileAndercau Vasile Andercau_Vasile Data 27 martie 2025 13:04:19
Problema Zebughil Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <fstream>
using namespace std;

ifstream fin("zebughil.in");
ofstream fout("zebughil.out");

#define NMAX 20

int z[NMAX];
int minim;
int part[NMAX];
int s[NMAX];

int maxim(int k) {
    int m = 0;
    for (int i = 1; i <= k; ++i) {
        m = max(m, part[i]);
    }
    return m;
}

void verifica(int n, int g) {
    int m = maxim(n);
    minim = min(minim, m);
}

void back(int k, int n, int g) {
    int m = maxim(k - 1);
    for (int i = 1; i <= m + 1; ++i) {
        part[k] = i;
        s[i] += z[k];

        if (s[i] <= g) {
            if (k == n) {
                verifica(n, g);
            } else {
                back(k + 1, n, g);
            }
        }

        s[i] -= z[k];
    }
}

int main() {
    int t = 3;
    while (t--) {
        int n, g;
        fin >> n >> g;
        for (int i = 1; i <= n; ++i) {
            fin >> z[i];
        }

        minim = n;
        back(1, n, g);

        fout << minim << '\n';
    }
    return 0;
}