package chelper; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import io.InputReader; import io.OutputWriter; import solutions.ChelperSolution; public class TaskD extends ChelperSolution { public static final long MAGIC = 1000000L; @Override public void solve(int testNumber, InputReader in, OutputWriter out) { super.solve(testNumber, in, out); } @Override public void solve(int testNumber) { int n = in.nextInt(); int m = in.nextInt(); int[] positions = in.nextIntArray(n); int[][] swaps = in.nextIntIntArray(m, 2); int[] positionOf = new int[n + 1]; for (int i = 0; i < n; i++) { positionOf[positions[i]] = i; } Set set = new HashSet<>(); for (int i = 0; i < m; i++) { int l = positionOf[swaps[i][0]]; int r = positionOf[swaps[i][1]]; set.add(l * MAGIC + r); } int nastya = n - 1; List jumpers = new ArrayList<>(); List leftovers = new ArrayList<>(); // Set jumpers = new HashSet<>(); // Set leftovers = new HashSet<>(); leftovers.add(nastya); for (int i = nastya - 1; i >= 0; i--) { boolean ok = true; for (Integer j : leftovers) { if (!set.contains(i * MAGIC + j)) { ok = false; break; } } if (ok) { jumpers.add(i); } else { leftovers.add(i); } } out.println(jumpers.size()); } }