Submission details
Task:Lisäykset
Sender:sharph2
Submission time:2025-11-28 21:27:53 +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.06 s2, 3details
#7ACCEPTED0.06 s3details
#8ACCEPTED0.06 s3details
#9ACCEPTED0.06 s3details
#10ACCEPTED0.13 s3details
#11ACCEPTED0.13 s3details

Code

#include <climits>
#include <cstdint>
#include <iostream>
#include <map>
#include <vector>

using namespace std;

int n, m;
map<int, int> erotukset;

int main() {
    cin.sync_with_stdio(false);
    cin.tie(nullptr);

    cin >> n >> m;

    int edellinen = -1010101010;
    for(int i = 0; i <= n; ++i) {
        int x;
        if(i == n) {
            x = 1010101010;
        } else {
            cin >> x;
        }
        if(x != edellinen) {
            erotukset[i] = x - edellinen;
        }
        edellinen = x;
    }

    auto kasvata = [&](int i) {
        ++erotukset[i];
    };
    auto pienenna = [&](int i) {
        auto it = erotukset.find(i);
        if(it == erotukset.end()) {
            throw 5;
        }
        if(it->second == 1) {
            erotukset.erase(it);
        } else {
            if(it->second < 1) {
                throw 5;
            }
            --it->second;
        }
    };

    for(int i = 0; i < m; ++i) {
        int k;
        cin >> k;

        auto it = erotukset.lower_bound(k);
        if(it == erotukset.end()) throw 5;
        if(it->first == k) {
            pienenna(k);
        } else {
            if(it == erotukset.begin()) throw 5;
            auto it2 = it;
            --it2;

            int a = it2->first;
            int b = it->first;

            pienenna(b);
            kasvata(b - (k - a));
            pienenna(a);
        }
    }

    vector<int> tulos(n);
    int luku = 1010101010 - erotukset[n];
    for(int i = n - 1; i >= 0; --i) {
        tulos[i] = luku;
        luku -= erotukset[i];
    }
    for(int x : tulos) {
        cout << x << " ";
    }
    cout << "\n";

    return 0;
}

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...