Cod sursa(job #1732163)

Utilizator Bodo171Bogdan Pop Bodo171 Data 20 iulie 2016 23:19:15
Problema Zebughil Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <iostream>
#include<fstream>
#include<bitset>
using namespace std;
bitset<(1<<17)+5> pos[20];
int a[20],best[20][(1<<17)+5],n,gr,i,j,k;
int main()
{
    ifstream f("zebughil.in");
    ofstream g("zebughil.out");
    for(int cnt=1;cnt<=3;cnt++)
    {
        f>>n>>gr;
        for(i=0;i<n;i++)
            {f>>a[i];}
        for(i=1;i<=n;i++)
            for(j=1;j<(1<<n);j++)
              pos[i][j]=0;
        for(i=0;i<n;i++)
            {
                best[1][(1<<i)]=gr-a[i];
                pos[1][(1<<i)]=1;
            }
        for(i=1;i<=n;i++)
            for(j=1;j<(1<<n);j++)
                if(pos[i][j])
               {
                 for(k=0;k<n;k++)
                  if((j&(1<<k))==0)
                      {
                        if(a[k]<=best[i][j])
                         {
                    if(best[i][j]-a[k]>best[i][j+(1<<k)]||pos[i][j+(1<<k)]==0)
                          {best[i][j+(1<<k)]=best[i][j]-a[k];
                          pos[i][j+(1<<k)]=1;}
                         }
                       }
                 best[i+1][j]=gr;
                 pos[i+1][j]=1;
                }
             i=1;
        while((pos[i][(1<<n)-1]==0))
            {i++;}
        g<<i<<'\n';
    }
    return 0;
}