#include <iostream.h>
#include <fstream.h>
int geshu=0,totalgeshu=0,total=0;
void sort(int arra[],int geshu,int part);
void exch(int &a , int &b)
{
int temp=a;
a=b;
b=temp;
}
int main()
{
ifstream du("test/prog2.in");
ofstream xie("test/prog2.out");
du>>geshu>>total;
int *arr=new int[geshu];
for(int i=0;i<geshu;i++)
{
du>>arr[i];
//xie<<arr[i]<<' ';检查是否读入
}
//cout<<geshu<<totageshu;检查是否读入
//xie<<geshu<<' '<<totageshu;检查是否读入
sort(arr,0,geshu-1);
/*for(int c=0;c<geshu;c++)
{
xie<<arr[c]<<' ';//检查是否读入
}*/
for(int a=0;a<=geshu;a++)
{
if(total>=0)
{
total=total-arr[a];
}
}
xie<<a-1<<endl;
xie.close();
return 0;
}
void sort(int arra[],int geshu,int part)
{ int i = geshu-1, j = part, p = geshu-1, q = part; int v = arra[part];
if (part <= geshu) return;
for (;;) {
while (arra[++i] < v) ;
while (v < arra[--j]) if (j == geshu) break;
if (i >= j) break;
exch(arra[i],arra[j]);
if (arra[i] == v) { p++; exch(arra[p], arra[i]); }
if (v == arra[j]) { q--; exch(arra[j], arra[q]); }
}
exch(arra[i], arra[part]); j = i-1; i = i+1;
for (int k = geshu; k < p; k++, j--) exch(arra[k], arra[j]);
for (int n = part-1; n > q; n--, i++) exch(arra[i], arra[n]);
sort(arra, geshu, j);
sort(arra, i, part);
}