Submission details
Task:Lisäykset
Sender:Laakeri
Submission time:2025-11-29 19:08:12 +0200
Language:C++ (C++11)
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.14 s2, 3details
#7ACCEPTED0.14 s3details
#8ACCEPTED0.14 s3details
#9ACCEPTED0.14 s3details
#10ACCEPTED0.15 s3details
#11ACCEPTED0.16 s3details

Code

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

const int N=1<<17;
int st[2*N];

void add(int a, int b, int v){
	a+=N;
	b+=N;
	while (a<=b){
		if (a%2){
			st[a++]+=v;
		}
		if (!(b%2)){
			st[b--]+=v;
		}
		a/=2;
		b/=2;
	}
}

int get(int i, int n){
	if (i<=0) return -1;
	if (i>n) return 1e9;
	int s=0;
	for (i+=N;i;i/=2){
		s+=st[i];
	}
	return s;
}

int where(int x, int n){
	int mi=-1;
	int ma=n+1;
	while (mi<=ma){
		int mid=(mi+ma)/2;
		if (get(mid,n)<x){
			mi=mid+1;
		} else {
			ma=mid-1;
		}
	}
	return mi;
}

int main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	int n,m;
	cin>>n>>m;
	for (int i=1;i<=n;i++){
		int x;
		cin>>x;
		add(i,i,x);
	}
	for (int i=0;i<m;i++){
		int k;
		cin>>k;

		int t=get(k,n);
		int a=where(t,n);
		int b=where(t+1,n)-1;
		add(1, a-1, 1);
		add(b-(k-a), b, 1);
	}
	for (int i=1;i<=n;i++){
		cout<<get(i,n)<<" ";
	}
	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...