Submission details
Task:Lisäykset
Sender:jlaire
Submission time:2025-11-29 19:33:48 +0200
Language:C++ (C++17)
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED20
#2ACCEPTED33
#3ACCEPTED47
Test results
testverdicttimegroup
#1ACCEPTED0.00 s1, 2, 3details
#2ACCEPTED0.00 s1, 2, 3details
#3ACCEPTED0.00 s1, 3details
#4ACCEPTED0.00 s1, 3details
#5ACCEPTED0.00 s1, 3details
#6ACCEPTED0.04 s2, 3details
#7ACCEPTED0.04 s3details
#8ACCEPTED0.04 s3details
#9ACCEPTED0.04 s3details
#10ACCEPTED0.05 s3details
#11ACCEPTED0.05 s3details

Code

#include <algorithm>
#include <iostream>
#include <utility>
#include <vector>
using namespace std;
using pii = pair<int,int>;

pii pop(vector<pii>& v) {
    pii p = v.back();
    v.pop_back();
    return p;
}

vector<int> solve(vector<int> X, vector<int> Q) {
    vector<pii> L, R;
    int Lcnt=0, Loff=0;
    auto pushR = [&](pii p) {
        auto [x,cnt] = p;
        if (cnt==0) return;
        if (R.empty() || R.back().first > x) {
            R.emplace_back(x, 0);
        }
        R.back().second += cnt;
    };
    auto popR = [&]() { return pop(R); };
    auto pushL = [&](pii p) {
        auto [x,cnt] = p;
        if (cnt==0) return;
        if (L.empty() || L.back().first+Loff < x) {
            L.emplace_back(x-Loff, 0);
        }
        L.back().second += cnt;
        Lcnt += cnt;
    };
    auto popL = [&]() {
        auto [x,cnt] = pop(L);
        Lcnt -= cnt;
        return pii(x+Loff, cnt);
    };

    for (int i=X.size(); i>0; i--) {
        pushR({X[i-1], 1});
    }
    sort(Q.begin(), Q.end());
    for (int q:Q) {
        while (Lcnt < q) {
            pushL(popR());
        }
        while (Lcnt - L.back().second >= q) {
            pushR(popL());
        }
        int nop = Lcnt - q;
        auto [x,cnt] = popL();
        Loff++;
        pushL({x, nop});
        pushR({x+1, cnt-nop});
    }
    while (!R.empty()) {
        pushL(popR());
    }
    vector<int> ans;
    for (auto [x,cnt] : L) {
        for (int i=0; i<cnt; i++) {
            ans.push_back(x+Loff);
        }
    }
    return ans;
}

int main() {
    cin.tie(0)->sync_with_stdio(0);
    int n,m; cin>>n>>m;
    vector<int> X(n), Q(m);
    for (int&x:X) cin>>x;
    for (int&q:Q) cin>>q;
    vector<int> ans = solve(X,Q);
    for (int i=0; i<n; i++) {
        cout << ans[i] << " \n"[i+1==n];
    }
}

Test details

Test 1

Group: 1, 2, 3

Verdict: ACCEPTED

input
1 1000
0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

correct output
1000 

user output
1000

Test 2

Group: 1, 2, 3

Verdict: ACCEPTED

input
1000 1000
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

correct output
511 511 511 511 511 511 511 51...

user output
511 511 511 511 511 511 511 51...

Test 3

Group: 1, 3

Verdict: ACCEPTED

input
1000 1000
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

correct output
495 495 495 495 495 495 495 49...

user output
495 495 495 495 495 495 495 49...

Test 4

Group: 1, 3

Verdict: ACCEPTED

input
1000 1000
0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 ...

correct output
562 562 562 562 562 562 562 56...

user output
562 562 562 562 562 562 562 56...

Test 5

Group: 1, 3

Verdict: ACCEPTED

input
1000 1000
0 1 3 4 6 9 9 9 10 11 11 11 11...

correct output
997 997 997 997 997 998 998 99...

user output
997 997 997 997 997 998 998 99...

Test 6

Group: 2, 3

Verdict: ACCEPTED

input
100000 100000
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

correct output
50033 50033 50033 50033 50033 ...

user output
50033 50033 50033 50033 50033 ...

Test 7

Group: 3

Verdict: ACCEPTED

input
100000 100000
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

correct output
49996 49996 49996 49996 49996 ...

user output
49996 49996 49996 49996 49996 ...

Test 8

Group: 3

Verdict: ACCEPTED

input
100000 100000
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

correct output
50057 50057 50057 50057 50057 ...

user output
50057 50057 50057 50057 50057 ...

Test 9

Group: 3

Verdict: ACCEPTED

input
100000 100000
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

correct output
50536 50536 50536 50536 50536 ...

user output
50536 50536 50536 50536 50536 ...

Test 10

Group: 3

Verdict: ACCEPTED

input
100000 100000
0 4 7 29 33 44 52 75 77 79 82 ...

correct output
100000 100001 100003 100023 10...

user output
100000 100001 100003 100023 10...

Test 11

Group: 3

Verdict: ACCEPTED

input
100000 100000
1 12 14 16 49 59 59 63 68 73 8...

correct output
100001 100010 100012 100014 10...

user output
100001 100010 100012 100014 10...