
#include <stdio.h>
#include <stdlib.h>
// 定义商店结构体
typedef struct {
int price;
int count;
} Store;
// 比较函数,用于qsort排序
int compare(const void *a, const void *b) {
Store *storeA = (Store *)a;
Store *storeB = (Store *)b;
return storeA->price - storeB->price; // 按价格升序排序
}
int main() {
int n, m;
scanf("%d %d", &n, &m);
Store stores[100000];
// 输入数据
for (int i = 0; i < n; i++) {
scanf("%d %d", &stores[i].price, &stores[i].count);
}
// 使用快速排序(比冒泡排序快很多)
qsort(stores, n, sizeof(Store), compare);
long long total_cost = 0;
int drinks_needed = m;
// 从最便宜的商店开始购买
for (int i = 0; i < n && drinks_needed > 0; i++) {
if (stores[i].count <= drinks_needed) {
// 买光这个商店的所有饮料
total_cost += (long long)stores[i].price * stores[i].count;
drinks_needed -= stores[i].count;
} else {
// 只买需要的数量
total_cost += (long long)stores[i].price * drinks_needed;
drinks_needed = 0;
}
}
printf("%lld\n", total_cost);
return 0;
}
2407

被折叠的 条评论
为什么被折叠?



