作者:
月息
,
2023-01-21 21:11:53
,
所有人可见
,
阅读 5
#include <iostream>
#include <cstring>
#include <map>
#include <algorithm>
using namespace std;
int a[1010];
int b[1010];
int n,k;
long long sum;
bool cmp(int x,int y){
return x>y;
}
bool check(int m){
sum=k;
memcpy(a,b,sizeof(a));
sort(a+1,a+1+m,cmp);
for(int i=1;i<m;i+=2){
sum=sum-a[i];
}
if(m%2==1)sum-=a[m];
if(sum>=0)return true;
else return false;
}
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>a[i];
}
memcpy(b,a,sizeof(b));
int r=n,l=1;
while(l<r){
int mid=(l+r+1)/2;
if(check(mid))l=mid;
else r=mid-1;
}
if(check(r))cout<<r<<endl;
else cout<<0;
return 0;
}