Cod sursa(job #1663452)

Utilizator cojocarugabiReality cojocarugabi Data 25 martie 2016 23:43:43
Problema Zebughil Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 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];
int 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] = min(1ll * S[it ^ (1 << i)] + s[i],1ll * g+1);
        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;
}