Pagini recente » Cod sursa (job #168671) | Cod sursa (job #1649118) | Cod sursa (job #2646468) | Cod sursa (job #1715819) | Cod sursa (job #963741)
Cod sursa(job #963741)
#include<cstdio>
using namespace std;
int i,j,T,N,G,Z[20],DP[(1<<17)+5],Cap[(1<<17)+5],AuxD,AuxC;
int main()
{
freopen("zebughil.in","r",stdin);
freopen("zebughil.out","w",stdout);
for(T=3;T;T--)
{
scanf("%d%d",&N,&G);
for(i=1;i<=N;i++) scanf("%d",&Z[i]);
for(i=1;i<(1<<N);i++) DP[i]=N+1,Cap[i]=0;
for(i=1,j=1;i<(1<<N);i<<=1,j++) DP[i]=1,Cap[i]=Z[j];
for(i=1;i<(1<<N);i++)
for(j=1;j<=N;j++)
if(!(1<<(j-1)&i))
{
if(Z[j]+Cap[i]>G) AuxD=DP[i]+1; else AuxD=DP[i];
AuxC=(Z[j]+Cap[i])%G; if(AuxC==0) AuxC=G;
if(AuxD<DP[i+(1<<(j-1))]) DP[i+(1<<(j-1))]=AuxD,Cap[i+(1<<(j-1))]=AuxC;
}
printf("%d\n",DP[(1<<N)-1]);
}
return 0;
}