87792024-01-30 00:31:41rennKutyavetélkedőjavaForditási hiba
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;

import static java.lang.Math.max;

public class Main {
    private static BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

    public static void main(String[] args) throws IOException {

        int n, k, m, a, b;
        String[] be = reader.readLine().split(" ");
        n = Integer.parseInt(be[0]);
        k = Integer.parseInt(be[1]);

        Integer[] feladatok = new Integer[n+2];
        Integer[] legjobb = new Integer[n+2];
        HashSet<Integer>[] szabalyok = new HashSet[k+1];
        be = reader.readLine().split(" ");
        for (int i = 0; i < n; i++){
            feladatok[i] = Integer.parseInt(be[i])-1;
            legjobb[i] = -1;
        }
        feladatok[n] = feladatok[n+1] = legjobb[n] = legjobb[n+1] = -1;
        for (int i = 0; i < k; i++){
            szabalyok[i] = new HashSet<>();
        }

        if (feladatok[0] == k && feladatok[1] == k) {
            System.out.println("0");
            return;
        }
        m = Integer.parseInt(reader.readLine());

        while (m > 0) {
            m--;
            be = reader.readLine().split(" ");
            a = Integer.parseInt(be[0])-1;
            b = Integer.parseInt(be[1])-1;
            if (a == k || b == k) continue;

            szabalyok[a].add(b);
        }

        legjobb[0] = feladatok[0] == k ? -1 : 1;
        legjobb[1] = feladatok[1] == k ? -1 : 1;
        for (int i = 0, j = 0; i < n; i++) {
            if (j == 2) break;
            if (legjobb[i] == -1) {
                j++;
                continue;
            }
            j = 0;

            if (szabalyok[feladatok[i]].contains(feladatok[i + 1]))
                legjobb[i + 1] = max(legjobb[i + 1], legjobb[i] + 1);
            if (szabalyok[feladatok[i]].contains(feladatok[i + 2]))
                legjobb[i + 2] = max(legjobb[i + 2], legjobb[i] + 1);
        }

        System.out.println(max(0, max(legjobb[n - 1], legjobb[n - 2])));
    }
}
Forditási hiba
exit status 1