CSES - Shared codeLink to this code: https://cses.fi/paste/83798472eadfac51d2a9d/
import java.io.*;
import java.util.PriorityQueue;

public class snsTwo {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String st[] = br.readLine().split(" ");
        int n = Integer.parseInt(st[0]);
        int m = Integer.parseInt(st[1]);
        int k = Integer.parseInt(st[2]);

        st = br.readLine().split(" ");
        PriorityQueue<Integer> arr = new PriorityQueue<>(n);
        for (int i = 0; i < n; i++) {
            arr.add(Integer.parseInt(st[i]));
        }
        st = br.readLine().split(" ");
        PriorityQueue<Integer> brr = new PriorityQueue<>(m);
        for (int i = 0; i < m; i++) {
            brr.add(Integer.parseInt(st[i]));
        }
//        Arrays.sort(arr);
//        Arrays.sort(brr);

        int cnt = 0;
        while(!arr.isEmpty() && !brr.isEmpty()) {
            if((brr.peek() >= arr.peek() - k) && (brr.peek() <= arr.peek() + k)){
                arr.poll();
                brr.poll();
                cnt++;
            } else if(arr.peek() + k < brr.peek()) {
                arr.poll();
            } else if(arr.peek() - k > brr.peek()) {
                brr.poll();
            }
        }
        System.out.println(cnt);
    }
}