Submission details
Task:Yhdistelmät
Sender:Lieska
Submission time:2025-11-28 22:38:16 +0200
Language:C++ (C++20)
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
#30
#40
Test results
testverdicttimegroup
#10.00 s1, 2, 3, 4details
#20.00 s1, 3, 4details
#30.00 s1, 4details
#40.00 s1, 4details
#50.00 s1, 4details
#60.00 s1, 4details
#70.00 s1, 4details
#80.00 s1, 4details
#90.00 s1, 4details
#100.00 s1, 4details
#110.00 s2, 3, 4details
#120.00 s3, 4details
#130.00 s4details
#140.00 s4details
#150.00 s4details
#160.00 s4details
#170.00 s4details
#180.00 s1, 2, 3, 4details
#190.00 s1, 2, 3, 4details
#200.00 s4details
#210.00 s4details

Code

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

int diff[101010];
set<int> ch;

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    int n, m;
    cin >> n >> m;
    int prev = -1;
    int smallest = 0;
    for (int i=1; i<=n; ++i){
        int a;
        cin >> a;
        if (i==1) smallest = a;
        else{
            diff[i] = a - prev;
            if (a != prev) ch.insert(i);
        }
        prev = a;
    }
    ch.insert(n+1); // To avoid that it == ch.end() below.
    for (int i=1; i<=m; ++i){
        
        int k;
        cin >> k;
        auto it = ch.upper_bound(k);
        if (*it == k+1){
            diff[k+1]--;
            if (diff[k+1]==0){
                if (*it <= n) ch.erase(*it); // If so that we don't erase n+1.
            }
            smallest++;
        }
        else {
            auto ite = ch.begin();
            int b;
            int next = *it;
            if (*ite != *it) {
                smallest++;
                it--;
                b = k - *it + 1;
                diff[*it]--;
                if (diff[*it]==0 && *it <= n) ch.erase(*it);
            }
            else{
                b = k;    
            }
            diff[next]--;
            diff[next - b]=1;
            if (diff[next]==0 && next <= n) ch.erase(next);
            ch.insert(next-b);
        }
        /*
        cout << "here " << i << " " << k << " " << smallest << "\n";
        for (int j=1; j<=n; ++j) cout << diff[j] << " ";
        cout << "\n";
        for (auto u:ch) cout << u << " ";
        cout << "\n";
        */
    }
    int curr = smallest;
    for (int i=1; i<=n; ++i){
        curr+=diff[i];
        cout << curr << " ";
    }
    cout << "\n";
}

Test details

Test 1

Group: 1, 2, 3, 4

Verdict:

input
20 20
80 69 91 47 74 75 94 22 100 43...

correct output
446
11
2 3 5 8 10 13 14 15 17 19 20 

user output
(empty)

Test 2

Group: 1, 3, 4

Verdict:

input
20 20
5 42 7 18 55 64 64 83 73 44 22...

correct output
425
11
1 2 3 4 7 10 13 16 18 19 20 

user output
25 60 19 30 65 74 74 93 83 53 ...

Test 3

Group: 1, 4

Verdict:

input
20 20
30 98 55 69 40 3 95 12 64 56 3...

correct output
284
8
1 3 8 10 15 16 18 19 

user output
50 117 69 81 51 12 104 21 73 6...

Test 4

Group: 1, 4

Verdict:

input
20 20
11 44 58 8 16 52 20 43 24 31 4...

correct output
348
10
2 4 5 7 11 13 15 16 18 20 

user output
31 62 74 22 29 64 31 31 12 19 ...

Test 5

Group: 1, 4

Verdict:

input
20 20
53 44 5 37 88 36 81 47 85 97 3...

correct output
119
13
1 2 4 8 10 11 13 14 16 17 18 1...

user output
(empty)

Test 6

Group: 1, 4

Verdict:

input
20 20
20 27 75 94 48 62 37 55 49 67 ...

correct output
478
11
1 2 5 7 10 12 13 15 16 17 18 

user output
(empty)

Test 7

Group: 1, 4

Verdict:

input
20 20
32 28 67 72 32 76 53 30 47 67 ...

correct output
215
10
2 4 5 7 8 9 11 13 16 20 

user output
52 45 83 87 46 88 65 42 59 78 ...

Test 8

Group: 1, 4

Verdict:

input
20 20
39 72 74 79 49 45 73 44 37 4 7...

correct output
185
13
1 3 5 6 7 8 10 13 14 16 17 18 ...

user output
(empty)

Test 9

Group: 1, 4

Verdict:

input
20 20
41 56 65 78 2 13 17 42 83 76 9...

correct output
95
11
2 4 5 6 7 8 13 14 17 18 19 

user output
61 76 83 94 17 27 29 53 94 86 ...

Test 10

Group: 1, 4

Verdict:

input
20 20
43 1 20 61 25 46 2 18 36 1 85 ...

correct output
111
8
1 2 3 7 8 10 16 19 

user output
63 21 22 63 26 46 1 17 35 0 80...

Test 11

Group: 2, 3, 4

Verdict:

input
100 100
992248 852673 366775 737068 56...

correct output
30642743
46
3 5 6 9 11 12 15 16 17 18 21 2...

user output
(empty)

Test 12

Group: 3, 4

Verdict:

input
100 100
153790 361741 45017 47184 9422...

correct output
16529629
39
2 3 4 5 10 12 14 17 24 25 26 3...

user output
(empty)

Test 13

Group: 4

Verdict:

input
100 100
186797 446409 957173 150683 17...

correct output
14928280
62
1 2 8 9 10 11 12 14 15 16 17 2...

user output
(empty)

Test 14

Group: 4

Verdict:

input
100 100
343213 582494 707357 104682 66...

correct output
11308944
72
1 3 4 5 6 7 8 9 10 11 12 13 14...

user output
(empty)

Test 15

Group: 4

Verdict:

input
100 100
922546 12088 805566 351521 644...

correct output
3311952
10
14 17 26 29 64 65 70 76 83 95 

user output
(empty)

Test 16

Group: 4

Verdict:

input
100 100
923042 35929 531316 587665 845...

correct output
519209
6
2 18 45 61 64 86 

user output
(empty)

Test 17

Group: 4

Verdict:

input
100 100
493725 218022 417464 531537 83...

correct output
1255541
11
16 19 24 29 30 50 60 62 67 74 ...

user output
(empty)

Test 18

Group: 1, 2, 3, 4

Verdict:

input
1 1
2
1 1
1

correct output
0
0

user output

Test 19

Group: 1, 2, 3, 4

Verdict:

input
1 1
1
1 2
1

correct output
1
1

user output

Test 20

Group: 4

Verdict:

input
100 100
1000000 1000000 1000000 100000...

correct output
0
100
1 2 3 4 5 6 7 8 9 10 11 12 13 ...

user output
(empty)

Test 21

Group: 4

Verdict:

input
100 100
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

correct output
99999900
100
1 2 3 4 5 6 7 8 9 10 11 12 13 ...

user output
(empty)