import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
public class CD70 {
public static void main(String[] args) throws IOException { BufferedReader sc = new BufferedReader(new InputStreamReader(System.in)); String[] str = sc.readLine().split(" "); int length = Integer.parseInt(str[0]); int target = Integer.parseInt(str[1]); int[] arr = new int[length]; String[] data = sc.readLine().split(" "); for (int i = 0; i < length; i++) { arr[i] = Integer.parseInt(data[i]); } Arrays.sort(arr); int result = process(arr,target); System.out.println(result); } private static int process(int[] arr, int target) { ArrayList<Integer> list = new ArrayList<>(); int range = 0; //数组内元素能表示的最大元素 连续的 for (int i = 0; i < arr.length; i++) { if (arr[i]<=range+1){ range+=arr[i]; } else{ list.add(range+1); range+=range+1; i--; //新加了元素 但是没有加上i位置的值 } if (range>=target){ break; } } //range < target 时 while(range<target){ list.add(range+1); range += range + 1 ; } return list.size(); }
}