```cpp #include <iostream> #include <vector> #include <queue> using namespace std; int main() { int n, k; cin >> n >> k; vector<int> a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } priority_queue<pair<int, int>> q; // 大顶堆,存储怪物生命值和编号 for (int i = 0; i < n; i++) { q.push({a[i], i + 1}); } vector<int> res; while (!q.empty()) { pair<int, int> top = q.top(); q.pop(); top.first -= k; if (top.first <= 0) { res.push_back(top.second); } else { q.push(top); } } for (int i : res) { cout << i << " "; } return 0; } // 额外注意点: // 1. 输入数据的合法性检查。 // 2. 处理边界情况,如只有一个怪物的情况。 // 3. 代码的可扩展性,方便后续功能的添加。 ``` [2025-02-11 21:48:02 | AI写代码神器 | 293点数解答]