Pagini recente » Plantatie | Cod sursa (job #3141845) | Cod sursa (job #2414772) | Cod sursa (job #2068450) | Cod sursa (job #3221424)
#ifndef LOCAL
#pragma GCC optimize("O3")
#pragma GCC target("avx2")
#endif
#ifdef LOCAL
#define _GLIBCXX_DEBUG
#endif
#include <bits/stdc++.h>
#define int long long
#define pb push_back
#define pii pair<int, int>
using ll = long long;
using ci = const int;
using cll = const long long;
using namespace std;
const int NMAX = 17;
const int MASCA_MAX = (1 << NMAX);
const int INF = 2e9 + 7;
/*******************************/
// INPUT / OUTPUT
#ifndef LOCAL
ifstream in("zebughil.in");
ofstream out("zebughil.out");
#define cin in
#define cout out
#endif
/*******************************/
/// GLOBAL DECLARATIONS
int T;
int N, G;
int w[NMAX];
pii dp[MASCA_MAX];
/*******************************/
/// FUNCTIONS
void ReadInput();
void Solution();
/*******************************/
///-------------------------------------
inline void ReadInput()
{
T = 3;
}
///-------------------------------------
inline void Reset()
{
}
///-------------------------------------
inline void Read()
{
cin >> N >> G;
for (int i = 0 ; i < N ; ++ i)
cin >> w[i];
}
///-------------------------------------
inline void Solve()
{
int masca_max = (1 << N);
for (int i = 0 ; i < masca_max ; ++ i)
{
dp[i] = {INF, INF};
}
int masca_noua;
dp[0] = {1, 0};
for (int masca = 0 ; masca < masca_max ; ++ masca)
{
for (int bit = 0 ; bit < N ; ++ bit)
{
if (masca & (1 << bit))
{
masca_noua = (masca ^ (1 << bit));
if (dp[masca_noua].second + w[bit] <= G)
dp[masca] = min(dp[masca], {dp[masca_noua].first, dp[masca_noua].second + w[bit]});
else
dp[masca] = min(dp[masca], {dp[masca_noua].first + 1, w[bit]});
}
}
}
}
///-------------------------------------
inline void Output()
{
cout << dp[(1 << N) - 1].first << "\n";
}
///-------------------------------------
inline void TestCase()
{
Reset();
Read();
Solve();
Output();
}
///-------------------------------------
inline void Solution()
{
while (T --)
{
TestCase();
}
}
///-------------------------------------
signed main()
{
#ifndef LOCAL
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
#endif
ReadInput();
Solution();
return 0;
}