Pagini recente » Cod sursa (job #212682) | Cod sursa (job #1529118) | Cod sursa (job #813773) | Cod sursa (job #3289371) | Cod sursa (job #3289542)
#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 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);
bool corect = 1;
for (int i = 1; i <= m; ++i) {
int sum = 0;
for (int j = 1; j <= n; ++j) {
if (part[j] == i) {
sum += z[j];
}
}
if (sum > g) {
corect = 0;
}
}
if (corect) {
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;
if (k == n) {
verifica(n, g);
} else {
back(k + 1, n, g);
}
}
}
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;
}