Cod sursa(job #2592715)

Utilizator lucametehauDart Monkey lucametehau Data 2 aprilie 2020 10:34:45
Problema Zebughil Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>

using namespace std;

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

const int INF = (int)1e6;

int n, g;

int v[18], s[131073], dp[131073];

int main() {
  for(int t = 1; t <= 3; t++) {
    cin >> n >> g;
    for(int i = 1; i <= n; i++)
      cin >> v[i];
    dp[0] = 0;
    for(int i = 1; i < (1 << n); i++) {
      s[i] = 0;
      for(int j = 1; j <= n; j++) {
        if(i & (1 << (j - 1))) {
          if(s[i] > v[i] + j) {
            s[i] = g + 1;
            break;
          }
          s[i] += v[j];
        }
      }
      dp[i] = INF;
      for(int j = i; j; j = (j - 1) & i) {
        if(s[j] <= g)
          dp[i] = min(dp[j ^ i] + 1, dp[i]);
      }
    }
    cout << dp[(1 << n) - 1] << "\n";
    for(int i = 1; i < (1 << n); i++)
      dp[i] = INF;
  }
  return 0;
}