Pagini recente » Cod sursa (job #2801367) | Cod sursa (job #3210876) | Cod sursa (job #2224916) | Cod sursa (job #2608090) | Cod sursa (job #2669145)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("zebughil.in");
ofstream fout("zebughil.out");
int n, g, v[20], stiva[20], maxim, ans[20], z;
void Back(int index, int sum){
if (maxim == g)
return;
if (sum > maxim){
maxim = sum;
z = 0;
for (int i = 1; i < index; ++i)
ans[++z] = stiva[i];
if (maxim == g)
return;
}
for (int i = stiva[index - 1] + 1; i <= n; ++i){
stiva[index] = i;
if (sum + v[i] <= g)
Back(index + 1, sum + v[i]);
}
}
int main(){
for (int j = 1; j <= 3; ++j){
fin >> n >> g;
for (int i = 1; i <= n; ++i){
fin >> v[i];
}
sort(v + 1, v + n + 1);
int contor = 0;
while (n > 0){
maxim = 0;
Back(1, 0);
++contor;
int cnt = 1;
int aux[20], l = 0;
for (int i = 1; i <= n; ++i){
if (i == ans[cnt]){
++cnt;
}
else{
aux[++l] = v[i];
}
}
n = l;
for (int i = 1; i <= l; ++i) v[i] = aux[i];
}
fout << contor << "\n";
}
fin.close();
fout.close();
return 0;
}