Cod sursa(job #377804)

Utilizator vladiiIonescu Vlad vladii Data 26 decembrie 2009 13:42:28
Problema Zebughil Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <iostream>
#include <fstream>
using namespace std;
int main() {
    fstream f1, f2;
    int semn[18], e[100000], b[100000], p[100000], n, g, i, j, q, m, k;
    f1.open("zebughil.in", ios::in);
    f2.open("zebughil.out", ios::out);
    for(k=1; k<=3; k++) {
      f1>>n>>g;
      for(i=1; i<=n; i++) {
         f1>>e[i];
         b[1<<(i-1)]=g-e[i];
         p[1<<(i-1)]=1;
      }
      for(i=1; i<=(1<<n)-1; i++) {
         q=i;
         for(j=1; j<=n; j++) {
              semn[j]=q%2; q=q/2;
         }
         for(j=1; j<=n; j++) {
              //semn[j]==0
              if(semn[j]==0) {
                   if(b[i]>=e[j]) {
                        b[i+(1<<(j-1))]=min(b[i], g-e[j]);
                        p[i+(1<<(j-1))]=p[i];
                   }
                   else {
                        b[i+(1<<(j-1))]=min(b[i], e[j]);
                        p[i+(1<<(j-1))]=p[i]+1;
                   }
              }
         }
      }
      f2<<p[(1<<n)-1]<<endl;
    }
    f1.close(); f2.close();
    return 0;
}