Cod sursa(job #2669125)

Utilizator PatrickCplusplusPatrick Kristian Ondreovici PatrickCplusplus Data 6 noiembrie 2020 10:13:34
Problema Zebughil Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.29 kb
#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];
        }
        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;
}