题意:一个人有两个口袋,她要每天都要从路上带走一些石头,路上的石头有n种,每种有ai块,她的每个口袋最多装k个石头,并且强迫症不允许她将石头混合。所以一个口袋只能装一种。她每天只来一次,求最少次数将所有石头带走。
思路:因为两个口袋容量一致。所以可以先看成每一次只装一个口袋,求得总次数再除个2,可能会单出一个,就要向上取整。
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
const int maxn = 1e5+10;
int a[maxn];
int main()
{
int n,k;
//freopen("in.txt","r",stdin);
while(scanf("%d%d",&n,&k)!=EOF)
{
int num;
long long ans=0;
for(int i=0;i<n;i++)
{
scanf("%d",&num);
int aa=ceil(num*1.0/k);
ans += aa;
}
ans=ceil(ans*1.0/2);
printf("%I64d\n",ans);
}
}