Почему Яндекс Контест выдаёт runtime-error при проверке задачи на Java

Задача:

Вася и Маша участвуют в субботнике и красят стволы деревьев в белый цвет. Деревья растут вдоль улицы через равные промежутки в 1 метр. Одно из деревьев обозначено числом ноль, деревья по одну сторону занумерованы положительными числами 1 , 2 и т.д., а в другую — отрицательными − 1 , − 2 и т.д. Ведро с краской для Васи установили возле дерева P , а для Маши — возле дерева Q . Ведра с краской очень тяжелые и Вася с Машей не могут их переставить, поэтому они окунают кисть в ведро и уже с этой кистью идут красить дерево. Краска на кисти из ведра Васи засыхает, когда он удаляется от ведра более чем на V метров, а из ведра Маши — на M метров. Определите, сколько деревьев может быть покрашено.

Формат ввода

В первой строке содержится два целых числа P и V — номер дерева, у которого стоит ведро Васи и на сколько деревьев он может от него удаляться. В второй строке содержится два целых числа Q и M — аналогичные данные для Маши. Все числа целые и по модулю не превосходят 1 0 8 .

Формат вывода

Выведите одно число — количество деревьев, которые могут быть покрашены.

Пример

Ввод

0 7
12 5

Вывод

25

Моё решение выдаёт runtime-error в яндекс контесте, несмотря на то, что локально всё работает прекрасно (это все данные об ошибке, которые я могу получить от яндекса):

runtime-error

Это - настройки компилятора: Header compiler-settings

Моё решение:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * A
 */
public class A {

    private static BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));

    public static void main(String[] args) throws IOException {
        List<List<Integer>> ranges = new ArrayList<>();
        for (int i = 0; i < 2; i++) {
            int[] input = processInput();
            List<Integer> range = findRange(input[0], input[1]);
            ranges.add(range);
        }

        List<Integer> vRange = ranges.get(0);
        List<Integer> mRange = ranges.get(1);

        writer.write(String.valueOf(getAmountOfTrees(vRange, mRange)));
        writer.flush();
    }

    public static int getAmountOfTrees(List<Integer> l1, List<Integer> l2) {
        List<Integer> intersection = getIntersection(l1, l2);
        boolean areListsEqual = checkIfTwoListsEqual(l1, l2);

        if (intersection.size() == 0) {
            return l1.size() + l2.size();
        } else if (areListsEqual) {
            return l2.size();
        } else if (areListsEqual) {
            return l1.size();
        }

        List<Integer> alteredlist = removeIntersection(l1, l2, intersection);
        return alteredlist.size() + intersection.size();
    }

    public static List<Integer> findRange(int a, int b) {
        int start = a - b;
        int end = a + b;
        List<Integer> range = new ArrayList<>();
        for (int i = start; i <= end; i++) {
            range.add(i);
        }
        return range;
    }

    public static int[] processInput() throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String input = reader.readLine();

        return Arrays.stream(input.split(" "))
            .mapToInt(Integer::parseInt)
            .toArray();
    }

    public static boolean isFirstListGreaterThanSecond(List<Integer> l1, List<Integer> l2) {
        return l1.size() > l2.size() ? true : false;
    }

    public static List<Integer> removeIntersection(List<Integer> l1, List<Integer> l2, List<Integer> intersection) {
        for (int i : intersection) {
            int indexl1 = l1.indexOf(i);
            int indexl2 = l2.indexOf(i);
            l1.remove(indexl1);
            l2.remove(indexl2);
        }
        l1.addAll(l2);
        l1.sort((Integer i1, Integer i2) -> i1 - i2);

        return l1;
    }

    public static List<Integer> getIntersection(List<Integer> l1, List<Integer> l2) {
        List<Integer> intersection = new ArrayList<>();

        for (int i1 : l1) {
            for (int i2 : l2) {
                if (i1 == i2) {
                    intersection.add(i1);
                }
            }
        }

        return intersection;
    }

    public static boolean checkIfTwoListsEqual(List<Integer> l1, List<Integer> l2) {
        if (l1.size() != l2.size()) {
            return false;
        }
        return l1.equals(l2);
    }
}

Версия jdk: jdk-21. Помогите, пожалуйста, никак не могу понять в чём ошибка.


Ответы (0 шт):