메뉴 건너뛰기

문제


시간메모리제출 통과 비율
1초64MB
0
0
0.0%
나의 횟수나의 판정시도 성공 비율
00
0.0%
문제

JOI 상점에는 \(N\)개의 상품이 있으며, 상품에는 1부터 \(N\)까지 번호가 붙어 있다. 상품 \(i\) (\(1 \le i \le N\))의 정가는 \(A_i\)이다.

JOI 상점의 인터넷 쇼핑에서는 상품을 살 때 한 종류의 쿠폰을 0장 이상 원하는 만큼 사용할 수 있다. JOI 상점의 쿠폰은 \(Q\)종류가 있으며, 쿠폰 종류에는 1부터 \(Q\)까지 번호가 붙어 있다.

종류 \(j\) (\(1 \le j \le Q\))의 쿠폰을 \(k\)장 (\(k \ge 0\)) 사용했을 때의 효과는 다음과 같다.

  • \(i = 1, 2, \dots, N\)에 대해, 상품 \(i\)의 가격이 \(\max(0, A_i - D_j \times k)\)가 된다. (\(\max(0, A_i - D_j \times k)\)는 0과 \(A_i - D_j \times k\) 중 작지 않은 쪽을 뜻한다.)
  • 상품 가격과 별도로 \(C_j \times k\)의 추가 요금이 든다.

각 쿠폰 종류에 대응하여 \(Q\)개의 질문을 생각할 수 있다. \(j\)번째 질문은 다음과 같다.

  • 종류 \(j\)의 쿠폰만 사용하여 \(N\)개의 상품을 각 1개씩 살 때, 지불 합계 금액의 최솟값은 얼마인가.

상품과 쿠폰 정보가 주어졌을 때, 각 질문에 대한 답을 구하는 프로그램을 작성하라.

입력

입력은 다음 형식으로 주어진다.

\(N\) \(Q\)

\(A_1\) \(A_2\) \(\cdots\) \(A_N\)

\(C_1\) \(D_1\)

\(\vdots\)

\(C_Q\) \(D_Q\)

제약 조건

  • \(1 \le N \le 300{,}000\)
  • \(1 \le Q \le 300{,}000\)
  • \(1 \le A_i \le 10^9\) (\(1 \le i \le N\))
  • \(1 \le C_j \le 10^9\) (\(1 \le j \le Q\))
  • \(1 \le D_j \le 10^9\) (\(1 \le j \le Q\))
  • 입력되는 값은 모두 정수이다.

부분문제

  1. (6점) \(N = 1\), \(Q \le 3{,}000\)
  2. (3점) \(N \le 100\), \(Q \le 100\), \(A_i \le 100\) (\(1 \le i \le N\))
  3. (8점) \(N \le 3{,}000\), \(Q \le 3{,}000\), \(D_j = 1\) (\(1 \le j \le Q\))
  4. (22점) \(N \le 3{,}000\), \(Q \le 3{,}000\)
  5. (15점) \(D_j = 1\) (\(1 \le j \le Q\))
  6. (18점) \(A_i \le 1{,}000{,}000\) (\(1 \le i \le N\))
  7. (28점) 추가 제약 조건 없음
출력

다음 형식으로 출력한다.

\(Q\)줄 출력한다. \(j\)번째 줄 (\(1 \le j \le Q\))에는 \(j\)번째 질문에 대한 답을 출력한다.

예시 1
입력
3 4 8 10 3 12 5 3 2 3 4 100 100
출력
20 14 8 21
설명

1번째 질문에서, 종류 1의 쿠폰을 1장 쓰면 각 상품 가격은 3, 5, 0이 되고, 합계 금액은 \(3 + 5 + 0 + 12 \times 1 = 20\)이다. 20보다 작은 합계를 만들 수 없으므로 20을 출력한다.

2번째 질문에서, 종류 2의 쿠폰을 4장 쓰면 각 상품 가격은 0, 2, 0이 되고, 합계 금액은 \(0 + 2 + 0 + 3 \times 4 = 14\)이다. 14보다 작은 합계를 만들 수 없으므로 14를 출력한다.

3번째 질문에서, 종류 3의 쿠폰을 2장 쓰면 각 상품 가격은 0, 2, 0이 되고, 합계 금액은 \(0 + 2 + 0 + 3 \times 2 = 8\)이다. 8보다 작은 합계를 만들 수 없으므로 8을 출력한다.

4번째 질문에서, 종류 4의 쿠폰을 0장 쓰면 각 상품 가격은 8, 10, 3이 되고, 합계 금액은 \(8 + 10 + 3 + 100 \times 0 = 21\)이다. 21보다 작은 합계를 만들 수 없으므로 21을 출력한다.

예시 2
입력
1 3 83 2 5 4 5 6 5
출력
34 67 83
예시 3
입력
15 3 3 1 4 1 5 9 2 6 5 3 5 8 9 7 9 1 1 10 1 20 1
출력
9 67 77
예시 4
입력
6 3 1000000000 999999999 999999998 999999997 999999996 999999995 1000000000 1 1 1000000000 900000000 900000000
출력
5999999985 1 1499999985
위로