Mai intai trebuie sa te autentifici.
Cod sursa(job #2269252)
| Utilizator | Data | 25 octombrie 2018 20:02:05 | |
|---|---|---|---|
| Problema | Zebughil | Scor | 10 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 1.21 kb |
#include <fstream>
using namespace std;
ifstream fin("zebughil.in");
ofstream fout("zebughil.out");
long long N,G;
long long bloc[20];
long long sol[20];
long long used[20];
long long camion[20];
long long rez, act;
void bkt(int pas, int lim, long long dim) {
if(pas == lim + 1) {
if(act < rez)
rez = act;
return;
} else
for(int i = 1; i <= lim; i++)
if(!used[i]) {
used[i] = 1;
if(camion[act] + bloc[i] <= dim)
camion[act] += bloc[i];
else
camion[++act] = bloc[i];
bkt(pas + 1, lim, dim);
used[i] = 0;
camion[act] -= bloc[i];
if(camion[act] == 0 && act > 1)
--act;
}
}
int main() {
for(int j = 1; j <= 3; j++) {
fin >> N >> G;
for(int i = 1; i <= N; i++)
fin >> bloc[i];
rez = N;
act = 1;
bkt(1, N, G);
for(int i = 1; i <= N; i++) {
bloc[i] = 0;
}
fout << rez << '\n';
}
return 0;
}
