만드는 중입니다

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

레이스

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

요약
각 쌍 (u, v)에 대해 과거 경기 결과와 가장 낮은 점수 s개를 버리는 규칙을 바탕으로, v의 총점이 u보다 높아지는 데 필요한 최소 추가 경기 수를 구합니다.
난이도

어려움10점 중 8점

유형
그리디, 이분 탐색, 정렬
정답자
아직 제출이 없습니다

문제

Memtendo 회사가 Super Mario Kart의 새 버전을 출시했다. 게임에는 1부터 nn까지 번호가 붙은 캐릭터 nn명이 나온다. 설문 조사로 각 캐릭터의 인기도 bib_i를 정했고, 인기도는 0 이상의 정수다.

게임은 여러 번의 레이스로 이루어지며, 모든 캐릭터가 매 레이스에 참가한다. 레이스가 끝나면 상위 kk명이 점수를 받는다. 1등은 a1a_1점, 2등은 a2a_2점을 받고, kk등은 aka_k점을 받는다. 나머지 캐릭터는 0점을 받는다. 두 캐릭터가 동시에 결승선에 도착하지 않으며, a1>a2>…>ak>0a_1 > a_2 > \ldots > a_k > 0을 만족한다.

총점은 다음과 같이 계산한다. 캐릭터가 모든 레이스에서 받은 점수(0점 포함)에서 가장 작은 ss개를 지운다. 남은 점수의 합을 그 캐릭터의 인기도에 더한다. 예를 들어 인기도가 3인 루이지가 네 레이스에서 2, 1, 3, 0점을 받고 s=2s = 2이면, 1점과 0점을 지운다. 따라서 루이지의 총점은 3+2+3=83 + 2 + 3 = 8이다. 레이스가 ss번보다 적은 게임은 총점을 계산하지 않는다.

이미 mm번의 레이스가 치러졌고 그 결과는 두 사람이 안다. 요시가 서로 다른 두 캐릭터 uu와 vv를 말하면, 마리오는 vv의 총점이 uu의 총점보다 커지기 위해 필요한 추가 레이스의 최소 수를 답해야 한다. 마리오는 각 추가 레이스의 결과를 자신에게 가장 유리하게 정할 수 있다.

입력

첫 줄에 정수 nn, mm, kk, ss가 주어진다 (2≤n≤10002 \le n \le 1000, 1≤m≤10001 \le m \le 1000, 1≤k≤n1 \le k \le n, 0≤s≤min⁡(10,m)0 \le s \le \min(10, m)). 둘째 줄에는 a1,a2,…,aka_1, a_2, \ldots, a_k가 주어진다 (1≤ak<ak−1<…<a1≤1091 \le a_k < a_{k-1} < \ldots < a_1 \le 10^9). 셋째 줄에는 b1,b2,…,bnb_1, b_2, \ldots, b_n이 주어진다 (0≤bi≤1090 \le b_i \le 10^9). 다음 mm개 줄에는 이미 치른 레이스의 도착 순서로, 1부터 nn까지의 서로 다른 번호 nn개가 한 줄에 하나씩 주어진다. 그 다음 줄에 질문 수 qq (1≤q≤1051 \le q \le 10^5)가 주어지고, 이어서 qq개 줄에 uu와 vv가 주어진다 (1≤u,v≤n1 \le u, v \le n, u≠vu \neq v).

출력

각 질문마다 vv의 총점이 uu의 총점보다 커질 수 있도록 하는 추가 레이스의 최소 수를 한 줄에 하나씩 출력한다. 추가 레이스가 필요 없으면 0을 출력한다. 모든 질문에 대해 답이 존재함이 보장된다.

예제1

  1. 예제 1

    입력
    4 3 3 1
    5 3 2
    4 5 2 1
    3 4 2 1
    3 4 2 1
    4 3 2 1
    5
    1 2
    3 2
    4 3
    4 1
    3 1
    
    예상 출력
    0
    2
    0
    2
    3