求大佬看看哪错了
查看原帖
求大佬看看哪错了
796997
CandyGodOfWar楼主2025/1/13 09:31
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
int n, m, q, u, v, t, a[N], maxn, who, cnt;
queue<int>que[5];
bool cmp (int x, int y) {
    return x > y;
}
void find (queue<int> &que, int pos) {
    if (que.size() && que.front() > maxn) {
        maxn = que.front();
        who = pos;
    }
}
int main () {
    cin >> n >> m >> q >> u >> v >> t;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
    }
    sort(a + 1, a + n + 1, cmp);
    for (int i = 1; i <= n; i++) {
        que[1].push(a[i]);
    }
    while (m--) {
        cnt++;
        maxn = INT_MIN;
        find(que[1], 1);
        find(que[2], 2);
        find(que[3], 3);
        if (who == 1) {
            que[1].pop();
        }
        else if (who == 2) {
            que[2].pop();
        }
        else {
            que[3].pop();
        }
        maxn += (cnt - 1) * q;
        int x = maxn * u / v;
        int y = maxn - x;
        if (cnt % t == 0) {
            cout << maxn << " ";
            que[2].push(x - cnt * q);
            que[3].push(y - cnt * q);
        }
    }
    cout << "\n";
    cnt = 0;
    while (que[1].size() || que[2].size() || que[3].size()) {
        maxn = INT_MIN;
        find(que[1], 1);
        find(que[2], 2);
        find(que[3], 3);
        if (who == 1) {
            que[1].pop();
        }
        else if (who == 2) {
            que[2].pop();
        }
        else {
            que[3].pop();
        }
        if (++cnt % t == 0) {
            cout << maxn + m * q << " ";
        }
    }
    return 0;
}

代码如上

2025/1/13 09:31
加载中...