提交时间:2026-04-15 20:15:27
运行 ID: 436473
#include <iostream> #include <algorithm> using namespace std; const int MAX = 100005; int def[MAX]; int atk[MAX]; int main() { ios::sync_with_stdio(false); cin.tie(0); int M, N; cin >> M >> N; // 读防御 for (int i = 0; i < M; i++) { cin >> def[i]; } // 读攻击 for (int i = 0; i < N; i++) { cin >> atk[i]; } // 排序 sort(def, def + M); sort(atk, atk + N); // 核心:最大攻击打最大防御 int d = M - 1; int a = N - 1; int cnt = 0; while (d >= 0 && a >= 0) { if (atk[a] > def[d]) { cnt++; a--; d--; } else { a--; } } // 计算剩余所有攻击的和 long long ans = 0; if (cnt == M) { for (int i = 0; i <= a; i++) { ans += atk[i]; } } cout << ans << endl; return 0; }