提交记录 #548
提交时间:2025-03-02 22:06:58
语言:c
状态:Unaccepted
编译情况:编译成功
固定测试点#1:
固定测试点#2:
额外测试点#482:
31【大学】北理工的恶龙
#include <stdio.h>
#include <stdlib.h>
int compare(const void *a, const void *b) {
return (*(int*)a - *(int*)b);
}
int main() {
int n, m;
// 输入龙头数和勇士人数
scanf("%d %d", &n, &m);
int dragonHeads[n];
int warriors[m];
// 输入龙头的直径
for (int i = 0; i < n; i++) {
scanf("%d", &dragonHeads[i]);
}
// 输入勇士的身高
for (int i = 0; i < m; i++) {
scanf("%d", &warriors[i]);
}
// 排序龙头和勇士的数组
qsort(dragonHeads, n, sizeof(int), compare);
qsort(warriors, m, sizeof(int), compare);
int totalCost = 0;
int warriorIndex = 0;
// 遍历每个龙头
for (int i = 0; i < n; i++) {
// 找到一个合适的勇士
while (warriorIndex < m && warriors[warriorIndex] < dragonHeads[i]) {
warriorIndex++; // 当前勇士不够高,查看下一个
}
// 如果没有可用的勇士
if (warriorIndex == m) {
printf("bit is doomed!\n");
return 0;
}
// 使用这个勇士砍掉龙头
totalCost += warriors[warriorIndex]; // 学分等于勇士的身高
warriorIndex++; // 移动到下一个勇士
}
// 输出总学分
printf("%d\n", totalCost);
return 0;
}