Cod sursa(job #2269252)

Utilizator GarboteialexGarbotei Alex Garboteialex 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;
}