Submission details
Task:Lisäykset
Sender:Kuha
Submission time:2025-11-28 22:12:27 +0200
Language:C++ (C++17)
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED20
#2ACCEPTED33
#3ACCEPTED47
Test results
testverdicttimegroup
#1ACCEPTED0.00 s1, 2, 3details
#2ACCEPTED0.01 s1, 2, 3details
#3ACCEPTED0.00 s1, 3details
#4ACCEPTED0.01 s1, 3details
#5ACCEPTED0.01 s1, 3details
#6ACCEPTED0.12 s2, 3details
#7ACCEPTED0.12 s3details
#8ACCEPTED0.12 s3details
#9ACCEPTED0.12 s3details
#10ACCEPTED0.14 s3details
#11ACCEPTED0.14 s3details

Code

#include <bits/stdc++.h>

using namespace std;

#define N (1<<17)

int v[2 * N];

void vset(int k, int x) {
    k += N;
    v[k] = x;
    for (k /= 2; k >= 1; k /= 2) {
        v[k] = v[2 * k] + v[2 * k + 1];
    }
}

void inc(int k, int x) {
    k += N;
    v[k] += x;
    for (k /= 2; k >= 1; k /= 2) {
        v[k] = v[2 * k] + v[2 * k + 1];
    }
}

int sum(int a, int b) {
    a += N;
    b += N;
    int s = 0;
    while (a <= b) {
        if (a % 2 == 1) s += v[a++];
        if (b % 2 == 0) s += v[b--];
        a /= 2;
        b /= 2;
    }
    return s;
}

int findk(int i, int k, int c) {
    if (i >= N) return i - N;
    if (c + v[2 * i] >= k) return findk(2 * i, k, c);
    return findk(2 * i + 1, k, c + v[2 * i]);
}

int main () {
    int n, m;
    cin>>n>>m;
    int prev = 0;
    for (int i = 0; i < n; i++) {
        int x;
        cin>>x;
        vset(i, x - prev);
        prev = x;
    }
    vset(n, 1000001);
    for (int i = 0; i < m; i++) {
        int k;
        cin>>k;
        int x = sum(0, k - 1);
        //cout<<"x "<<x<<endl;
        int j = findk(1, x, 0);
        //cout<<"j "<<j<<endl;
        int jj = findk(1, x + 1, 0);
        //cout<<"jj "<<jj<<endl;
        inc(0, 1);
        inc(j, -1);
        inc(jj - k + j, 1);
        inc(jj, -1);
        
    }
    for (int i = 0; i < n; i++) {
        cout<<sum(0, i)<<" ";
    }
    cout<<endl;
}

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