购物消费打折


实现代码:
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);}