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%,
😭