Pagini recente » Cod sursa (job #401516) | Cod sursa (job #875941) | Cod sursa (job #1556044) | Cod sursa (job #1044495) | Cod sursa (job #3345071)
#include <fstream>
#include <vector>
#define NMAX 17
using namespace std;
ifstream fin("zebughil.in");
ofstream fout("zebughil.out");
int N,G,z[NMAX];
vector<pair<int,int>> dp(1<<NMAX);
void citire()
{
fin>>N>>G;
for(int i=0; i<N; i++)
{
fin>>z[i];
}
}
int main()
{
for(int q=1; q<=3; q++)
{
citire();
for(int i=0; i<(1<<N); i++)
{
dp[i].first=N+1;
dp[i].second=0;
}
dp[0]={1,0};
for(int masca=0; masca<(1<<N); masca++)
{
for(int i=0; i<N; i++)
{
if(!(masca&(1<<i)))
{
if(dp[masca].second+z[i]>G)
{
dp[masca|(1<<i)]=min(dp[masca|(1<<i)],{dp[masca].first+1,z[i]});
}
else
{
dp[masca|(1<<i)]=min(dp[masca|(1<<i)],{dp[masca].first,dp[masca].second+z[i]});
}
}
}
}
fout<< dp[(1<<N)-1].first << "\n";
}
return 0;
}