아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

캠퍼스

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

요약
각 층이 k의 배수인 층은 방 x개, 나머지 층은 방 y개를 가지며 입구마다 방 번호가 이어질 때, 주어진 방 번호가 몇 층인지 구한다.
난이도

보통10점 중 5점

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

문제

바이트부르크 대학의 새 캠퍼스 건물에는 아래에서 위로 1부터 n까지 번호가 붙은 n개의 층이 있다. 학생 방은 여러 개의 출입구 동에 있다.

각 동에서 층 번호가 k의 배수인 층에는 방이 x개씩 있고, 나머지 층에는 방이 y개씩 있다.

각 동 안의 방에는 연속된 자연수가 매겨진다. 1층의 방 번호가 그 동에서 가장 작고, 그다음 2층의 방 번호가 이어지는 식이다. 첫 번째 동의 방은 1부터 번호가 매겨지고, 각 다음 동의 방 번호는 이전 동의 가장 큰 방 번호 다음 수부터 시작한다.

그림 1은 n = 7개의 층, 3개의 동, k = 3, x = 2, y = 3인 건물의 방 번호를 보여 준다.

동 1동 2동 3
7층17, 18, 1936, 37, 3855, 56, 57
6층15, 1634, 3553, 54
5층12, 13, 1431, 32, 3350, 51, 52
4층9, 10, 1128, 29, 3047, 48, 49
3층7, 826, 2745, 46
2층4, 5, 623, 24, 2542, 43, 44
1층1, 2, 320, 21, 2239, 40, 41

그림 1. 건물의 방 번호 매기기 예

학생 배정을 위해 캠퍼스 행정부는 방 번호로 그 방이 있는 층을 빠르게 알아내야 한다.

n, k, x, y와 방 번호들이 주어질 때, 각 방이 몇 층에 있는지 구하는 프로그램을 작성해야 한다.

입력

입력 파일의 첫 번째 줄에는 자연수 n, k, x, y가 주어진다 (1 ≤ n ≤ 10^9, 1 ≤ k ≤ n, 1 ≤ x, y ≤ 10^9). 인접한 수 사이에는 정확히 하나의 공백이 있다.

입력 파일의 두 번째 줄에는 자연수 q가 주어진다. q는 층을 구해야 하는 방 번호의 개수이다 (1 ≤ q ≤ 1000).

세 번째 줄에는 q개의 정수 a1, a2, …, aq가 주어진다. 이는 방 번호이다 (1 ≤ ai ≤ 10^18). 건물에 동이 충분히 많아 주어진 번호의 방이 모두 존재한다고 가정할 수 있다.

출력

q개의 수를 한 줄에 하나씩 출력한다. 입력 파일의 각 방 번호에 대해 그 방이 있는 층 번호를 출력한다.

예제1

  1. 예제 1

    입력
    7 3 2 3
    4
    1 19 20 50
    
    예상 출력
    1
    7
    1
    5