题目地址:http://codeforces.com/contest/1119/problem/B
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <map>
#include <queue>
#include <stack>
#include <string>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
long long a[1009];
long long b[1009];
long long h;
int n;
bool cmp(int n1,int n2)
{
return n1>n2;
}
int chuli(int m)
{
for(int i=1;i<=m;i++)
b[i]=a[i];
sort(b+1,b+m+1,cmp);
long long sum=h;
for(int i=1;i<=m;i=i+2)
{
sum=sum-b[i];
}
if(sum>=0)
return 1;
return 0;
}
int main()
{
scanf("%d",&n);
scanf("%lld",&h);
for(int i=1;i<=n;i++)
{
scanf("%lld",&a[i]);
}
if(n<=2)
{
printf("%d\n",n);
return 0;
}
int r,l,m;
l=2;r=n;
while(l<=r)
{
m=(l+r)/2;
if(m>n) m=n;
if(chuli(m)==1)
l=m+1;
else r=m-1;
}
printf("%d\n",r);
return 0;
}