提交时间:2026-04-15 19:59:55
运行 ID: 436462
#include <iostream> using namespace std; int main() { int M, N; cin >> M >> N; int def[1005], atk[1005]; // 读防御 for (int i = 0; i < M; i++) { cin >> def[i]; } // 读攻击 for (int i = 0; i < N; i++) { cin >> atk[i]; } // 防御从小到大排序 for (int i = 0; i < M-1; i++) for (int j = 0; j < M-1-i; j++) if (def[j] > def[j+1]) { int t = def[j]; def[j] = def[j+1]; def[j+1] = t; } // 攻击从小到大排序 for (int i = 0; i < N-1; i++) for (int j = 0; j < N-1-i; j++) if (atk[j] > atk[j+1]) { int t = atk[j]; atk[j] = atk[j+1]; atk[j+1] = t; } // 贪心匹配 int d = 0, a = 0; int cnt = 0; while (d < M && a < N) { if (atk[a] > def[d]) { cnt++; d++; a++; } else { a++; } } // 必须全部破坏才可以造成伤害 if (cnt < M) { cout << 0 << endl; } else { int sum = 0; for (int k = a; k < N; k++) sum += atk[k]; cout << sum << endl; } return 0; }