Pagini recente » Cod sursa (job #2708442) | Cod sursa (job #1157827) | Cod sursa (job #489127) | Cod sursa (job #69511) | Cod sursa (job #2917270)
/// Preset de infoarena
#include <fstream>
using namespace std;
ifstream fin("zebughil.in");
ofstream fout("zebughil.out");
int dp[(1 << 17) + 5][20];
int v[20], n, g;
void solve()
{
fin >> n >> g;
for(int i = 0; i < n; i++) /// :(((
fin >> v[i];
for(int config = 1; config < (1 << n); config++)
for(int i = 1; i <= n; i++)
dp[config][i] = -1;
for(int i = 0; i < n; i++)
dp[(1 << i)][1] = g - v[i];
for(int config = 1; config < (1 << n); config++)
{
for(int i = 1; i <= n; i++)
{
if(dp[config][i] == -1)
continue;
for(int j = 0; j < n; j++)
{
if(config & (1 << j) != 0)
continue;
int newconfig = config + (1 << j);
if(v[j] <= dp[config][i])
dp[newconfig][i] = max(dp[newconfig][i], dp[config][i] - v[j]);
else
dp[newconfig][i + 1] = max(dp[newconfig][i + 1], g - v[j]);
}
}
}
for(int i = 1; i <= n; i ++)
{
if(dp[(1 << n) - 1][i] != -1)
{
fout << i << '\n';
return;
}
}
}
int main()
{
int nr_teste = 3;
while(nr_teste--)
solve();
return 0;
}