Mai intai trebuie sa te autentifici.
Cod sursa(job #1663449)
| Utilizator | Data | 25 martie 2016 23:42:41 | |
|---|---|---|---|
| Problema | Zebughil | Scor | 90 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.83 kb |
# include <bits/stdc++.h>
# define ll long long
using namespace std;
ifstream fi("zebughil.in");
ofstream fo("zebughil.out");
int dp[1 << 17];
int s[55];
ll S[1 << 17];
int main(void)
{
int M = 1 << 17;
for (int t = 1;t <= 3;++t)
{
int n,g;
fi>>n>>g;
for (int i = 0;i < n;++i) fi>>s[i];
M = 1 << n;
for (int i = 0;i < M;++i) dp[i] = n;
dp[0] = 0;
memset(S,0,sizeof(S));
for (int it = 1;it < M;++it)
for (int i = 0;i < n;++i)
if ((it>>i)&1)
S[it] = S[it ^ (1 << i)] + s[i];
for (int it = 1;it < M;++it)
for (int mask = it;mask;mask = (mask - 1) & it)
if (S[mask] <= g) dp[it] = min(dp[it],dp[it ^ mask] + 1);
fo << dp[M - 1] << '\n';
}
return 0;
}
