import java.io.*; import java.util.ArrayList; import java.util.List; /* Отслеживаем изменения */ public class Solution { public static List<LineItem> lines = new ArrayList<LineItem>(); public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); BufferedReader fileReader = new BufferedReader(new FileReader(reader.readLine())); BufferedReader fileReader2 = new BufferedReader(new FileReader(reader.readLine())); String firstFileLine; String secondFileLine; ArrayList<String> list1 = new ArrayList<>(); ArrayList<String> list2 = new ArrayList<>(); while (fileReader.ready()) { firstFileLine = fileReader.readLine(); if (firstFileLine.length() != 0) { list1.add(firstFileLine); } } while (fileReader2.ready()) { secondFileLine = fileReader2.readLine(); if (secondFileLine.length() != 0) { list2.add(secondFileLine); } } for (int i = 0,j = 0;j < list2.size() ;) { if (list1.get(i).compareTo(list2.get(j)) == 0) { lines.add(new LineItem(Type.SAME, list1.get(i))); i++; j++; } else if (list1.get(i).compareTo(list2.get(j)) < 0) { lines.add(new LineItem(Type.REMOVED, list1.get(i))); i++; } else if (list1.get(i).compareTo(list2.get(j)) > 0) { lines.add(new LineItem(Type.ADDED, list2.get(j))); j++; } if (j >= list2.size()) { lines.add(new LineItem(Type.REMOVED," " + list1.get(i))); break; } } reader.close(); fileReader.close(); fileReader2.close(); } public static enum Type { ADDED, //добавлена новая строка REMOVED, //удалена строка SAME //без изменений } public static class LineItem { public Type type; public String line; public LineItem(Type type, String line) { this.type = type; this.line = line; } } }