Pagini recente » Cod sursa (job #3184238) | Cod sursa (job #2101737) | Cod sursa (job #2497985) | Cod sursa (job #492572) | Cod sursa (job #3193541)
#include <fstream>
using namespace std;
ifstream cin("zebughil.in");
ofstream cout("zebughil.out");
long long n, v[18];
struct zebughil
{
int minim, val ;
} dp[1<<17];
void solve()
{
long long n,g;
cin >> n >> g ;
for ( int i = 1; i <= n ; i ++ )
cin >> v[i];
for( int i = 1 ; i < ( 1 << n ) ; i ++ )
{
dp[i] = {n + 2,0} ;
for (int j = 1; j <= n ; j ++ )
{
if ( i & ( 1 << ( j -1)) )
{
int val1 = dp[i^(1<<(j-1))] . minim;
int val2 = dp[i^(1<<(j-1))] .val;
if ( v[j] + val2 > g )
{
val1 ++ ;
val2 = v[j];
}
else
val2 += v[j];
if ( dp[i].minim > val1)
{
dp[i].minim = val1;
dp[i].val = val2 ;
}
else if (dp[i].minim == val1)
dp[i] .val = min (dp[i].val,val2);
}
}
}
cout << dp[(1<<n) -1 ].minim + 1<< '\n';
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int test = 3;
while ( test -- )
solve();
return 0;
}