Cod sursa(job #1044574)

Utilizator ELHoriaHoria Cretescu ELHoria Data 30 noiembrie 2013 01:20:52
Problema Zebughil Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>
#include <cstring>
#include <algorithm>

using namespace std;


int main() 
{
    ifstream cin("zebughil.in");
    ofstream cout("zebughil.out");
    unsigned N, G;
    static unsigned int dp[1 << 17];
    static unsigned int sum[1 << 17];
    unsigned int z[17];
    for (int t = 0;t < 3;t++) {
        cin >> N >> G;
        for (int i = 0;i < N;i++) {
            cin >> z[i];
            sum[ (1 << i)] = z[i];
        }
        
        for (int i = 1;i < (1 << N);i++) {
             sum[i] = sum[i ^ (i & -i)] + sum[i & -i] > G ? G + 1 : sum[i ^ (i & -i)] + sum[i & -i];
             if (sum[i] <= G) {
                dp[i] = 1;
             } else {
                dp[i] = N + 1;
                for (int j = i & (i - 1);j > 0;j = (j - 1) & i) {
                    dp[i] = min(dp[i],dp[j] + dp[i ^ j]);
                }
             }
        }
        cout << dp[(1 << N) - 1] << "\n";
    }
    return 0;
}