编辑代码

#include <stdio.h>
#include <stdlib.h>
int Partition(int*,int,int);
void QuickSort(int*,int,int);
int main () {
    int n,b;
    int i;
    int sum=0;
    scanf("%d%d",&n,&b);
    int *h=(int*)malloc(n*sizeof(int));
    for(i=0;i<n;i++){
        scanf("%d",&h[i]);
    }
    QuickSort(h,0,n-1);
    for(i=0;i<n;i++){
        sum+=h[i];
        if(sum>=b)
            break;
    }
    printf("%d",i+1);
	return 0;
}

int Partition(int *A,int low,int high){
    int pivot=A[low];
    while(low<high){
        while(low<high && A[high]<=pivot) high--;
        A[low]=A[high];
        while(low<high && A[low]>=pivot) low++;
        A[high]=A[low];
    }
    A[low]=pivot;
    return low;
}
void QuickSort(int *A,int low,int high){
    if(low<high){
        int pivotpos=Partition(A,low,high);
        QuickSort(A,low,pivotpos-1);
        QuickSort(A,pivotpos+1,high);
    }
}