놀이기구 1

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

요약
매일 한 명의 키가 1cm씩 자라고, 그날 이후 Q개의 (i,j) 쌍 중 두 아이의 키 합이 해당 놀이기구의 제한을 넘겨 탈 수 있는 쌍의 수를 센다.
난이도

어려움10점 중 8점

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

문제

1번부터 NN번까지 번호가 붙은 아이 NN명이 있다. 아이들은 놀이공원에 가는 것을 좋아하지만 키 제한 때문에 놀이기구를 타지 못할 때가 많다. 놀이기구는 1번부터 MM번까지 MM개가 있고, 모든 놀이기구의 정원은 2명이다. 아이 ii와 아이 jj가 함께 놀이기구 kk를 타려면 (아이 ii의 키) + (아이 jj의 키) ≥\ge (놀이기구 kk의 키 제한)이 성립해야 한다.

(i,j,k)(i, j, k) 쌍이 QQ개 주어진다. 각 쌍은 아이 ii와 아이 jj가 매일 놀이기구 kk를 타려고 시도한다는 뜻이다. ii와 jj가 같을 수도 있으며, 이때도 같은 식을 그대로 적용한다. 같은 쌍이 여러 번 주어지면 각각 따로 센다.

처음에는 모든 아이의 키가 0cm라서 아무도 놀이기구를 타지 못한다. 하지만 아이들은 성장기라서 키가 쑥쑥 자란다.

첫째 날부터 KK번째 날까지 매일 한 명의 키가 1씩 자란다. 날마다 누구의 키가 자라는지 주어질 때, 첫째 날부터 KK번째 날까지 각 날에 아이들이 놀이기구를 모두 몇 번 타는지 구하는 프로그램을 작성하시오. 하루 안에서는 키가 먼저 자라고, 그다음에 놀이기구를 탄다.

입력

첫째 줄에 아이의 수 NN, 놀이기구의 수 MM, 기간 KK, 쌍의 개수 QQ가 주어진다. (1≤N,M,K,Q≤200 0001 \le N, M, K, Q \le 200\,000)

둘째 줄에 1번부터 MM번까지 놀이기구의 키 제한이 순서대로 주어진다. (1≤1 \le 키 제한 ≤200 000\le 200\,000)

셋째 줄에 각 날에 키가 자라는 아이의 번호 KK개가 날짜 순서대로 주어진다. (1≤1 \le 번호 ≤N\le N)

다음 QQ개 줄에 걸쳐 (i,j,k)(i, j, k) 쌍이 한 줄에 하나씩 주어진다. (1≤i,j≤N1 \le i, j \le N, 1≤k≤M1 \le k \le M)

출력

KK개 줄에 걸쳐 첫째 날부터 순서대로, 그날 아이들이 놀이기구를 모두 몇 번 타는지 출력한다.

힌트

첫 번째 예제에서 둘째 날까지는 아무도 놀이기구를 타지 못한다.

셋째 날에는 아이 3과 아이 5가 놀이기구 3을 탈 수 있다.

넷째 날에는 아이 3과 아이 5가 놀이기구 3을 탈 수 있고, 아이 1과 아이 2가 놀이기구 2를 탈 수 있다.

예제1

  1. 예제 1

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