Cod sursa(job #2669147)

Utilizator PatrickCplusplusPatrick Kristian Ondreovici PatrickCplusplus Data 6 noiembrie 2020 11:13:30
Problema Zebughil Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("zebughil.in");
ofstream fout("zebughil.out");

int n, g, v[20], sum[20];
bool pot;

void Back(int index, int x){
    if (index == n + 1){
        pot = true;
    }
    if (pot == true)
        return;
    for (int i = 1; i <= x; ++i){
        if (sum[i] + v[index] <= g){
            sum[i] = sum[i] + v[index];
            Back(index + 1, x);
            sum[i] = sum[i] - v[index];
        }
    }
}

bool Pot(int x){
    pot = false;
    memset(sum, 0, sizeof sum);
    Back(1, x);
    return pot;
}

int main(){
    for (int t = 1; t <= 3; ++t){
        fin >> n >> g;
        for (int i = 1; i <= n; ++i){
            fin >> v[i];
        }
        int st = 1, dr = n, ans = 0;
        while (st <= dr){
            int mid = (st + dr) / 2;
            if (Pot(mid)){
                dr = mid - 1;
                ans = mid;
            }
            else{
                st = mid + 1;
            }
        }
        fout << ans << "\n";
    }
    fin.close();
    fout.close();
    return 0;
}