提交时间:2026-04-15 20:15:56

运行 ID: 436474

#include <iostream> #include <algorithm> using namespace std; const int MAX = 100005; long long def[MAX]; long long 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 i = 0, j = 0; while (i < M && j < N) { if (atk[j] > def[i]) { i++; j++; } else { j++; } } // 只有全部破防才计算剩余伤害 long long ans = 0; if (i == M) { for (int k = j; k < N; k++) { ans += atk[k]; } } cout << ans << endl; return 0; }