

实现代码:
java
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int k = sc.nextInt();
int[] prices = new int[n];
for (int i = 0; i < n; i++) {
prices[i] = sc.nextInt();
}
String discountStr = sc.next();
List<Integer> discountItems = new ArrayList<>();
List<Integer> noDiscountItems = new ArrayList<>();
for (int i = 0; i < n; i++) {
if (discountStr.charAt(i) == '1') {
discountItems.add(prices[i]);
} else {
noDiscountItems.add(prices[i]);
}
}
// 排序
Collections.sort(discountItems);
Collections.sort(noDiscountItems);
int i = 0, j = 0;
int count = 0;
double balance = k;
while (i < discountItems.size() && j < noDiscountItems.size()) {
double discPrice = discountItems.get(i) * 0.95;
int noDiscPrice = noDiscountItems.get(j);
if (discPrice <= noDiscPrice) {
if (balance >= discPrice) {
balance -= discPrice;
count++;
i++;
} else {
break;
}
} else {
if (balance >= noDiscPrice) {
balance -= noDiscPrice;
count++;
j++;
} else {
break;
}
}
}
// 处理剩余优惠物品
while (i < discountItems.size()) {
double discPrice = discountItems.get(i) * 0.95;
if (balance >= discPrice) {
balance -= discPrice;
count++;
i++;
} else {
break;
}
}
// 处理剩余非优惠物品
while (j < noDiscountItems.size()) {
int noDiscPrice = noDiscountItems.get(j);
if (balance >= noDiscPrice) {
balance -= noDiscPrice;
count++;
j++;
} else {
break;
}
}
System.out.println(count);
}