Cod sursa(job #1658407)

Utilizator iordache.bogdanIordache Ioan-Bogdan iordache.bogdan Data 21 martie 2016 14:47:45
Problema Zebughil Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>
#include <vector>
#include <cstring>
#include <algorithm>

using namespace std;

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

int dp[1 << 17], v[17];

int main() {

	for (int test = 1; test <= 3; ++test) {

		int n, gMax;
		fin >> n >> gMax;

		for (int i = 0; i < n; ++i)
			fin >> v[i];

		for (int config = 1; config < (1 << n); ++config) {

			long long gCurr = 0;
			for (int i = 0; i < n; ++i)
				if ((config >> i) & 1)
					gCurr += v[i];

			if (gCurr <= gMax) {
				dp[config] = 1;
				continue;
			}
			
			dp[config] = 18;
			for (int oldConfig = (config & (config - 1)); oldConfig > 0; oldConfig = ((oldConfig - 1) & config)) {

				if (dp[config] > dp[oldConfig] + dp[config ^ oldConfig])
					dp[config] = dp[oldConfig] + dp[config ^ oldConfig];

			}

		}

		fout << dp[(1 << n) - 1] << '\n';

	}

	return 0;

}

//Trust me, I'm the Doctor!