엉성한 도토리 분류기

면접 대비

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

요약
도토리는 구멍을 하나 지날 때마다 크기가 1씩 줄고, 현재 크기보다 크거나 같은 첫 구멍으로 떨어진다. Q개의 도토리 각각이 빠져나오는 구멍 번호를 구한다.
난이도

보통10점 중 6점

유형
배열, 이분 탐색, 누적 합, 구현
정답자
아직 제출이 없습니다

문제

엉성한 분류기를 이용하여 도토리를 크기별로 나누고자 한다.

분류기는 NN개의 구멍이 뚫린 기울어진 판자이다. 분류기의 구멍은 높은 쪽부터 차례로 11번부터 NN번까지 번호가 매겨져 있다. ii번 구멍의 크기는 a_ia\_i이다.

분류기에 도토리를 넣으면 11번 구멍부터 NN번 구멍까지 굴러간다. 분류기의 표면은 거칠기 때문에 도토리가 하나의 구멍을 지나고 나면 크기가 11씩 줄어든다. 예를 들어 11번 구멍을 지날 때 도토리의 크기가 1010이었다면, 11번 구멍을 지나고 나서 22번 구멍을 지날 때는 크기가 11 줄어 99가 된다. 마찬가지로 도토리가 22번 구멍을 지났다면 33번 구멍을 지날 때 크기가 11 줄어 88이 된다.

도토리는 현재 크기보다 크거나 같은 구멍을 지날 때 그 구멍으로 떨어진다.

주어지는 QQ개의 도토리에 대하여, 각각의 도토리를 분류기에 넣었을 때 굴러떨어져 나오는 구멍 번호를 순서대로 출력하는 프로그램을 작성하라.

입력

첫 번째 줄에 분류기의 구멍 개수를 나타내는 정수 NN이 주어진다.

두 번째 줄에 각 구멍의 크기를 나타내는 NN개의 정수 a_1,a_2,⋯ ,a_Na\_1, a\_2, \cdots, a\_N이 공백으로 구분되어 주어진다.

세 번째 줄에 분류해야 하는 도토리의 개수를 나타내는 정수 QQ가 주어진다.

네 번째 줄에 분류기에 넣을 도토리의 크기를 나타내는 QQ개의 정수 s_1,s_2,⋯ ,s_Qs\_1, s\_2, \cdots, s\_Q가 공백으로 구분되어 주어진다.

주어진 입력 조건에서 도토리는 크기에 상관없이 어떤 구멍으로 빠져나올 수 있다.

출력

각 도토리를 분류기에 넣었을 때 굴러떨어져 나오는 구멍의 번호를 도토리가 주어지는 순서대로 공백으로 구분하여 출력한다.

제한

  • 1≤N≤1051 \le N \le 10^5
  • 1≤a_i≤N1 \le a\_i \le N
  • 1≤Q≤1051 \le Q \le 10^5
  • 1≤s_i≤N1 \le s\_i \le N

예제1

  1. 예제 1

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