#11,#13,#17 RE 求助
查看原帖
#11,#13,#17 RE 求助
513009
lmjsjg楼主2023/1/4 22:40

一直找不到哪里错了,求助

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>

using namespace std;

const int MAXN = 7100005;

long long n, m, q, u, v, t, delta;
long long tempArray[MAXN], ans1[MAXN], ans2[MAXN], cnt1, cnt2;
queue<long long> A, B, C;

int main() {
    freopen("qiuyin.in", "r", stdin);
    freopen("qiuyin.out", "w", stdout);

    scanf("%lld%lld%lld%lld%lld%lld", &n, &m, &q, &u, &v, &t);
    for(int i = 1; i <= n; ++i) {
        scanf("%lld", &tempArray[i]);
    }
    sort(tempArray + 1, tempArray + 1 + n, greater<long long>());
    for(int i = 1; i <= n; ++i) {
        A.push(tempArray[i]);
    }

    for(int i = 1; i <= m; ++i) {
        long long length;
        if(A.front() > B.front()) {
            if(A.front() > C.front()) {
                long long length = A.front() + delta;
                A.pop();
                B.push(u * length / v - delta - q);
                C.push(length - (u * length / v) - delta - q);
                delta += q;
                if(i % t == 0) {
                    ans1[++cnt1] = length;
                }
            } else {
                long long length = C.front() + delta;
                C.pop();
                B.push(u * length / v - delta - q);
                C.push(length - (u * length / v) - delta - q);
                delta += q;
                if(i % t == 0) {
                    ans1[++cnt1] = length;
                }
            }
        } else {
            if(B.front() > C.front()) {
                long long length = B.front() + delta;
                B.pop();
                B.push(u * length / v - delta - q);
                C.push(length - (u * length / v) - delta - q);
                delta += q;
                if(i % t == 0) {
                    ans1[++cnt1] = length;
                }
            } else {
                long long length = C.front() + delta;
                C.pop();
                B.push(u * length / v - delta - q);
                C.push(length - (u * length / v) - delta - q);
                delta += q;
                if(i % t == 0) {
                    ans1[++cnt1] = length;
                }
            }
        }
    }

    while(!A.empty()) {
        ans2[++cnt2] = A.front();
        A.pop();
    }
    while(!B.empty()) {
        ans2[++cnt2] = B.front();
        B.pop();
    }
    while(!C.empty()) {
        ans2[++cnt2] = C.front();
        C.pop();
    }
    sort(ans2 + 1, ans2 + 1 + cnt2, greater<long long>());

    for(int i = 1; i <= cnt1; ++i) {
        printf("%lld ", ans1[i]);
    }
    puts("");
    for(int i = 1; i <= cnt2; ++i) {
        if(i % t == 0) {
            printf("%lld ", ans2[i] + delta);
        }
    }
    puts("");

    return 0;
}
2023/1/4 22:40
加载中...