import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        int count = 0;
        ArrayList<Integer> list = new ArrayList<>();
        // 将面值放入一个list里,数量大于1则重复,如[100, 50, 50, 10, 1]
        for (int i = 0; i < n; i++) {
            int key = sc.nextInt();
            int value = sc.nextInt();
            for (int j = 0; j < value; j++) {
                list.add(key);
            }
        }
        int str = 0, end = list.size() - 1;
        // 两个指针 分别指向头部和尾部 [100, 50, 50, 10, 1]
        for (int i = 0; i < end; i++) {
            // 如果当前值大于工资则直接除 
            if (list.get(i) >= m) {
                count += list.get(i) / m;
            }// 如果当前值小于工资,如50 < 51,则从列表最后的
            // 最小的那批面值开始相加,直到付得起工资为止。
            else{
                int sum = list.get(i);
                while(sum < m && i < end){
                    sum += list.get(end);
                    end--;
                }
                if(sum >= m){
                    count++;
                }
            }
        }
        System.out.println(count);
    }
}
求教大佬,我感觉我java的思路没问题,就是如果小于面值,就优先从小面额开始相加,但是只过了40%,😭