Cod sursa(job #3040714)

Utilizator ciacliboiiiciacli stefan ciacliboiii Data 30 martie 2023 12:28:47
Problema Zebughil Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("zebughil.in");
ofstream fout("zebughil.out");
int n, g, w[10001], nr[10001], x;
vector<int> v;
void solve()
{
    fin >> n >> g;
    v.push_back(0);
    for(int i = 1; i <= n; ++ i)
    {
        fin >> x;
        v.push_back(x);
    }
    //fill(nr + 1, nr + n + 1, n);
    //fill(w + 1, w + n)
    int comp = (1 << n) - 1;
    for(int i = 0; i <= comp; ++ i)
    {
        for(int j = 0; j < n; ++ j)
            if(i & (1 << j))
            {
                int prec = i - (1 << j);
                if(w[prec] + v[i] > g * nr[prec]){
                    if((nr[prec] + 1 < nr[i] || nr[i] == 0) || (nr[prec] + 1 == nr[i] && w[i] > w[prec] + v[j]))
                    {
                        nr[i] = nr[prec] + 1;
                        w[i] = w[prec] + v[j];
                    }
                }else
                    if((nr[prec] < nr[i] || nr[i] == 0) ||  (nr[prec] == nr[i] && w[i] > w[prec] + v[j]))
                    {
                        nr[i] = nr[prec];
                        w[i] = w[prec] + v[j    ];
                    }
            }
    }
    fout << nr[comp] << '\n';
}
int main()
{
    for(int i = 0; i < 3; ++ i)
        solve();
    return 0;
}