우선순위 큐와 시뮬레이션

시간 제한1초메모리 제한1024 MB

요약
원소 전체에 더하기와 K로 나눈 나머지 연산을 반복 적용하면서 매 쿼리마다 최댓값을 출력한다.
난이도

어려움10점 중 8점

유형
수학, 힙, 정렬, 시뮬레이션
정답자
아직 제출이 없습니다

문제

NN개의 원소가 들어 있는 우선순위 큐가 있다. 해당 큐의 top은 큐에 존재하는 원소의 최댓값으로 정의한다.

우선순위 큐를 이용해 시뮬레이션하려고 할 때, ii번째 쿼리는 아래의 순서로 이루어진다.

  • 우선순위 큐의 모든 원소에 대해 A_iA\_i를 더한다.
  • 모든 원소에 대해 정수 KK로 나눈 나머지를 취한다.
  • top을 출력한다.

TT개의 쿼리에 대한 결과를 구해보자.

입력

첫째 줄에 우선순위 큐에 들어 있는 원소의 개수 NN, 쿼리에서 사용하는 정수 KK, 쿼리의 개수 TT가 공백으로 구분되어 주어진다. (1≤N,T≤200,000;(1\leq N, T\leq 200,000; 2≤K≤109)2\leq K\leq 10^{9})

둘째 줄에 우선순위 큐에 들어 있는 원소 Q_iQ\_i가 공백으로 구분되어 주어진다. (1≤Q_i≤109)\left(1\leq Q\_i\leq 10^{9}\right)

셋째 줄에 ii번째 쿼리에 더하는 수 A_iA\_i가 공백으로 구분되어 주어진다. (1≤A_i≤109)\left(1\leq A\_i\leq 10^{9}\right)

출력

TT개의 쿼리를 수행한 결과를 순서대로 공백으로 구분하여 출력한다.

예제1

  1. 예제 1

    입력
    5 10 5
    7 3 10 8 4
    4 8 6 7 8
    
    예상 출력
    8 9 8 9 7