#include <iostream>
#include <vector>
using namespace std;
/************************************************************************/
/* 给定物品个数M,背包个数N,每个背包容量k,依次输入物品的重量
当物品放不下背包时,如果还有背包则放入下一背包,如果没有,直接扔掉。
当下一背包中放入物品后,该背包封口即不可再放物品。
用例输入:
5 5 2
4 3 4 2 1
输出:3 */
/************************************************************************/
int succssPutInKnapsack(const int M,const int k,const int N,vector<int> &weight)
{
int result = 0;
vector<int> pack(N,0);
int j=0;
for (int i=0;i<M;i++)
{
if (weight[i] <= k)
{
if (weight[i] + pack[j] <= k)
{
pack[j] += weight[i];
result++;
}
else
{
if (i == M-1)
return result;
if (j+1 != N)
{
j++;
pack[j] += weight[i];
result++;
}
}
}
}
return result;
}
int main()
{
int M,N,k,weighti;
vector<int> weight;
cin>>M>>k>>N;
for (int i=0;i<M;i++)
{
cin>>weighti;
weight.push_back(weighti);
}
cout<<"成功拿走物品数: "<<succssPutInKnapsack(M,k,N,weight)<<endl;
system("pause");
return 0;
}