Description

有一批集装箱要装上一艘载重量为c的轮船。其中集装箱i的重量为Wi。最优装载问题要求确定在装载体积不受限制的情况下,将尽可能多的集装箱装上轮船。
编程任务:
对于给定的n个集装箱和轮船的载重量C,编程计算装入最多时的集装箱个数。

Input

输入由多组测试数据组成。
每组测试数据输入的第1行中有2个正整数n和C。正整数n是集装箱个数;正整数C是轮船的载重量。接下来的一行中有n个整数,分别表示n个集装箱的重量,它们之间用空格分隔。

Output

对应每组输入,输出的每行是计算出的装入最多时的集装箱个数。

Sample Input

4 5
3 5 2 1

 

Sample Output

2
 
#include<iostream>
#include
<stdio.h>
#include
<queue>
using namespace std;
struct Node 
{
    
int weight;
    friend 
bool operator <(Node a,Node b)
    
{
        
return a.weight > b.weight;
    }

}
;
int main()
{
    
int n,c,num,sum;
    Node p;
    
while(cin>>n>>c)
    
{
        priority_queue
<Node>Q;
        
while(n--)
        
{
            scanf(
"%d",&p.weight);
            Q.push(p);     
        }

        num 
= sum = 0;
        
while(!Q.empty())
        
{            
            p 
= Q.top();
            Q.pop();
            sum 
+= p.weight;
            num 
++
            
if(sum > c)
            
{
                num 
--;
                
break;
            }

        }

        cout
<<num<<endl;
    }

    
return 0;
}