Cod sursa(job #2949045)

Utilizator iancupoppPopp Iancu Alexandru iancupopp Data 29 noiembrie 2022 15:36:30
Problema Zebughil Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
#include <vector>

using namespace std;

ifstream cin("zebughil.in");
ofstream cout("zebughil.out");

void solve() {
  int n, g;
  cin >> n >> g;
  vector<int> w(n);
  for (int i = 0; i < n; ++i) {
    cin >> w[i];
  }
  vector<pair<int, unsigned>> dp(1 << n, {1e9, g});
  dp[0] = {0, g};
  for (int i = 0; i < (1 << n) - 1; ++i) {
    for (int j = 0; j < n; ++j) {
      if ((i & (1 << j)) == 0) {
        if (dp[i].second + w[j] > g) {
          dp[i | (1 << j)] = min(dp[i | (1 << j)], {dp[i].first + 1, w[j]});
        } else {
          dp[i | (1 << j)] = min(dp[i | (1 << j)], {dp[i].first, dp[i].second + w[j]});
        }
      }
    }
  }
  cout << dp[(1 << n) - 1].first << "\n";
}

int main() {
  for (int t = 0; t < 3; ++t) {
    solve();
  }
  return 0;
}