Cod sursa(job #2786636)

Utilizator Rares31100Popa Rares Rares31100 Data 21 octombrie 2021 12:54:35
Problema Zebughil Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <bits/stdc++.h>
using namespace std;

int n, g, a[17], dp[1 << 17];
ifstream fin("zebughil.in");
ofstream fout("zebughil.out");

int main()
{
	for(int K = 1; K <= 3; K++)
	{
		fin >> n >> g;

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

		for(int i = 1; i < (1 << n); i++)
		{
			int suma = 0;
			for(int j = 0; j < n; j++)
				if((1 << j) & i)
					suma += a[j];

			if(suma <= g)
				dp[i] = 1;
			else
			{
				dp[i] = (1 << 20);
				for(int sub_i = (i - 1) & i; sub_i; sub_i = (sub_i - 1) & i)
					dp[i] = min(dp[i], dp[sub_i ^ i] + dp[sub_i]);
			}
		}

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

	return 0;
}