Pagini recente » Cod sursa (job #2391407) | Cod sursa (job #917728) | Cod sursa (job #1677407) | Cod sursa (job #1287322) | Cod sursa (job #3264226)
#include <bits/stdc++.h>
#define VMAX 1000000
#define NMAX 17
#define LOG 20
#define INF (long long)(1e9)
#define MOD 1000000007
#define BASE 23
#define BLOCK_SIZE 230
#define ll long long int
#define EPS 0.02
using namespace std;
ifstream fin("zebughil.in");
ofstream fout("zebughil.out");
pair<int,ll> dp[1<<NMAX+1];
int a[NMAX+1];
int main()
{
int T;
T=3;
while(T--)
{
int n,g;
fin >> n >> g;
for(int i=1;i<=n;i++)
{
fin >> a[i];
}
for(int i=0;i<(1<<n);i++)
{
dp[i]={INF,INF};
}
dp[0] = {1,0};
for(int mask=1;mask < (1<<n);mask++)
{
for(int i=0;i<n;i++)
{
if(mask & (1<<i))
{
pair<int,int> nxt;
nxt.first = dp[mask ^ (1<<i)].first + (dp[mask ^ (1<<i)].second + a[i+1] > g);
nxt.second = (dp[mask ^ (1<<i)].second + a[i+1] > g) ? a[i+1] : dp[mask ^ (1<<i)].second + a[i+1];
if(nxt.first < dp[mask].first || (nxt.first == dp[mask].first && nxt.second < dp[mask].second))
{
dp[mask] = nxt;
}
}
}
}
fout << dp[(1<<n)-1].first << '\n';
}
}