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

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

세 배열

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

요약
정렬된 세 배열과 거리 d가 주어질 때, 세 배열에서 하나씩 고른 원소의 모든 쌍별 차이가 d 이하인 조합의 수를 센다.
난이도

보통10점 중 6점

유형
투 포인터, 정렬, 완전 탐색, 배열
정답자
아직 제출이 없습니다

문제

세 배열이 주어진다. aa는 nan_a개의 원소를, bb는 nbn_b개의 원소를, cc는 ncn_c개의 원소를 가진다. 세 배열은 모두 비감소 순서로 정렬되어 있다. 즉, 1≤i<na1 \le i < n_a인 모든 ii에 대해 ai≤ai+1a_i \le a_{i + 1}이고, 1≤j<nb1 \le j < n_b인 모든 jj에 대해 bj≤bj+1b_j \le b_{j + 1}이며, 1≤k<nc1 \le k < n_c인 모든 kk에 대해 ck≤ck+1c_k \le c_{k + 1}이다.

∣ai−bj∣≤d|a_i - b_j| \le d, ∣ai−ck∣≤d|a_i - c_k| \le d, ∣bj−ck∣≤d|b_j - c_k| \le d를 모두 만족하는 삼중항 (i,j,k)(i, j, k)의 개수를 구하시오.

입력

입력은 하나 이상의 테스트 케이스로 이루어진다. 각 테스트 케이스는 네 줄로 구성된다.

각 테스트 케이스의 첫째 줄에는 네 정수 dd, nan_a, nbn_b, ncn_c가 주어진다 (1≤d≤1091 \le d \le 10^9, 1≤na,nb,nc≤5⋅1051 \le n_a, n_b, n_c \le 5 \cdot 10^5).

둘째 줄에는 nan_a개의 정수 a1,a2,…,anaa_1, a_2, \ldots, a_{n_a}가 주어진다. 이는 배열 aa이다 (−109≤ai≤109-10^9 \le a_i \le 10^9).

셋째 줄에는 nbn_b개의 정수 b1,b2,…,bnbb_1, b_2, \ldots, b_{n_b}가 주어진다. 이는 배열 bb이다 (−109≤bi≤109-10^9 \le b_i \le 10^9).

넷째 줄에는 ncn_c개의 정수 c1,c2,…,cncc_1, c_2, \ldots, c_{n_c}가 주어진다. 이는 배열 cc이다 (−109≤ci≤109-10^9 \le c_i \le 10^9).

모든 배열은 비감소 순서로 정렬되어 있다. 모든 테스트 케이스에 걸친 nan_a의 합은 5⋅1055 \cdot 10^5을 넘지 않는다. 모든 테스트 케이스에 걸친 nbn_b의 합은 5⋅1055 \cdot 10^5을 넘지 않는다. 모든 테스트 케이스에 걸친 ncn_c의 합은 5⋅1055 \cdot 10^5을 넘지 않는다. 테스트 케이스는 별도의 구분자 없이 연이어 주어진다.

출력

각 테스트 케이스마다 ∣ai−bj∣≤d|a_i - b_j| \le d, ∣ai−ck∣≤d|a_i - c_k| \le d, ∣bj−ck∣≤d|b_j - c_k| \le d를 모두 만족하는 삼중항 (i,j,k)(i, j, k)의 개수를 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    1 3 3 3
    1 2 3
    1 2 3
    1 2 3
    1 6 6 6
    1 1 2 2 3 3
    2 2 3 3 4 4
    3 3 4 4 5 5
    
    예상 출력
    15
    56