만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

사과를 바구니에 나누기

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

요약
각 질의마다 무게가 k 이하인 사과를 두 바구니에 나누어 x<=a, y<=b인 모든 (x, y)를 만들 수 있는지 판별합니다.
난이도

어려움10점 중 8점

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

문제

사샤에게는 무게가 정수인 사과 nn개가 있고, 사과는 탁자 위에 놓여 있습니다. 또 사샤에게는 넉넉한 크기의 바구니 두 개가 있습니다.

사샤는 정수 kk를 고르고, 무게가 kk 이하인 사과를 살펴봅니다. 무게가 wi≤kw_i \le k인 각 사과는 두 바구니 중 하나에 넣거나 탁자 위에 그대로 둘 수 있습니다. 무게가 wi>kw_i > k인 사과는 항상 탁자 위에 남습니다.

두 수의 쌍 (x,y)(x, y)는, 사샤가 무게가 kk 이하인 사과 일부를 바구니에 넣어 첫 번째 바구니의 무게 합이 xx, 두 번째 바구니의 무게 합이 yy가 되게 할 수 있을 때 kk-도달 가능하다고 합니다.

쌍 (a,b)(a, b)는, 0≤x≤a0 \le x \le a이고 0≤y≤b0 \le y \le b인 모든 xx, yy에 대해 (x,y)(x, y)가 kk-도달 가능할 때 kk-이상적이라고 합니다.

사샤는 수 세 개로 이루어진 kk, aa, bb 질의를 qq개 가지고 있습니다. 각 질의마다 쌍 (a,b)(a, b)가 kk-이상적인지 알고 싶어 합니다.

입력

첫 줄에 사과의 개수 nn과 질의의 개수 qq가 주어집니다 (1≤n,q≤300 0001 \le n, q \le 300\,000).

둘째 줄에 사과의 무게 w1,w2,…,wnw_1, w_2, \dots, w_n이 주어집니다 (1≤wi≤10121 \le w_i \le 10^{12}).

셋째 줄에 질의를 만드는 데 쓰이는 정수 zz가 주어집니다 (0≤z≤1060 \le z \le 10^6).

이어지는 qq개의 줄에는 정수 jj, cc, dd가 주어집니다 (0≤j,c,d≤10180 \le j, c, d \le 10^{18}). vv는 지금까지의 질의 중 쌍 (a,b)(a, b)가 kk-이상적이었던 질의 번호들의 합입니다. 이때 현재 질의의 값은 k=j−v⋅zk = j - v \cdot z, a=c−v⋅za = c - v \cdot z, b=d−v⋅zb = d - v \cdot z입니다. k,a,b≥0k, a, b \ge 0이 보장됩니다.

z=0z = 0이면(대부분의 부분 문제가 이 경우입니다) kk, aa, bb는 각각 jj, cc, dd와 같습니다. 이 경우 질의 값은 이전 답에 따라 달라지지 않고 입력에 그대로 주어집니다.

출력

각 질의에 대해 쌍 (a,b)(a, b)가 kk-이상적이면 Yes를, 그렇지 않으면 No를 출력하세요.

예제2

  1. 예제 1

    입력
    8 5
    17 1 3 2 100 5 6 1
    0
    6 15 3
    9 4 4
    5 15 3
    17 34 1
    16 33 2
    
    예상 출력
    Yes
    No
    No
    Yes
    No
    
  2. 예제 2

    입력
    8 5
    17 1 3 2 100 5 6 1
    1
    6 15 3
    10 5 5
    6 16 4
    18 35 2
    21 38 7
    
    예상 출력
    Yes
    No
    No
    Yes
    No