Skip to content

Instantly share code, notes, and snippets.

@KT-Yeh
Created January 17, 2014 17:02
Show Gist options
  • Save KT-Yeh/8477115 to your computer and use it in GitHub Desktop.
Save KT-Yeh/8477115 to your computer and use it in GitHub Desktop.
#include <cstdio>
using namespace std;
void parcel(int &box,int num[],int &space,int w);
int main()
{
int num[7];
while(scanf("%d %d %d %d %d %d",&num[1],&num[2],&num[3],&num[4],&num[5],&num[6])){
int i=1;
for(;i<=6;i++)
if(num[i]!=0) break;
if(i==7) break;
int box=num[6]+num[5]+num[4];
num[1]-=11*num[5]; //一個5x5搭配11個1x1
num[2]-=5*num[4]; //一個4x4搭配5個2x2(如果2x2不夠的情況最底下會考慮)
box+=(num[3]/4); if(num[3]%4) box++;
switch(num[3]%4){ //3x3情況要特別討論
case 0: break;
case 1:
num[2]-=5;
num[1]-=7;
break;
case 2:
num[2]-=3;
num[1]-=6;
break;
case 3:
num[2]-=1;
num[1]-=5;
break;
}
if (num[2]>0){ //如果2x2還有剩
box+=num[2]/9; if(num[2]%9) box++;
num[1]-=(36-(num[2]%9)*4);
}
else if (num[2]<0)
num[1]-=(-num[2])*4; //將不夠的2x2用4個1x1來補
if (num[1]>0){ //如果1x1還有剩
box+=(num[1]/36); if(num[1]%36) box++;
}
printf("%d\n",box);
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment