Pagini recente » Cod sursa (job #937439) | Cod sursa (job #1349093) | Cod sursa (job #1129933) | Cod sursa (job #197233) | Cod sursa (job #2028333)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("zebughil.in");
ofstream fout("zebughil.out");
long long n, g, i, j, v[20], u[20], k, mn, m;
int bk[20], rez;
bool z[20];
void suma () {
long long sum = 0;
for (int i = 1; i <= k; i++)
sum += v[bk[i]];
long long nr = g-sum;
if (nr >= 0 && nr < mn)
{
mn = nr;
for (i = 1; i <= n; i++)
z[i] = 1;
for (i = 1; i <= k; i++)
z[bk[i]] = 0;
}
}
void back (int p) {
for (int i = bk[p-1]+1; i <= n; i++)
{
bk[p] = i;
if (p == k) suma();
else back(p+1);
}
}
int main () {
for (j = 1; j <= 3; j++)
{
fin >> n >> g;
for (i = 1; i <= n; i++)
fin >> v[i];
m = n; n = 0;
for (i = 1; i <= m; i++)
if (v[i] != 0) { n++; v[n] = v[i]; }
rez = 0;
if (n == 0) rez = 1;
while (n > 0)
{
mn = g+1;
for (k = 1; k <= n; k++)
back(1);
m = n; n = 0;
for (i = 1; i <= m; i++)
if (z[i] == 1) { n++; v[n] = v[i]; }
rez++;
}
fout << rez << "\n";
}
}