import java.util.*; import java.util.stream.Collectors;

/**

  • @author Tom 2022/1/28 15:36

  • I序列 15 123 456 786 453 46 7 5 3 665 453456 745 456 786 453 123

  • R序列 5 6 3 6 3 0

  • 输出 30 3 6 0 123 3 453 7 3 9 453456 13 453 14 123 6 7 1 456 2 786 4 46 8 665 9 453456 11 456 12 786

  • 说明:

  • 将序列R:5,6,3,6,3,0(第一个5表明后续有5个整数)排序去重后,可得0,3,6。

  • 序列I没有包含0的元素。

  • 序列I中包含3的元素有:I[0]的值为123、I[3]的值为453、I[7]的值为3、I[9]的值为453456、I[13]的值为453、I[14]的值为123。

  • 序列I中包含6的元素有:I[1]的值为456、I[2]的值为786、I[4]的值为46、I[8]的值为665、I[9]的值为453456、I[11]的值为456、I[12]的值为786。

  • 最后按题目要求的格式进行输出即可。

  • 5 1197 707 1807 11747 7545

  • 20 74 66 17 11 80 23 120 108 11 66 16 100 91 50 64 20 10 97 34 85

  • 34 6306 2334 7534 836 4144 943 6088 9202 4820 4768 5408 9485 10367 4969 1792 10435 8895 8563 1639 7981 2760 8497 6255 4422 8518 4104 1683 2280 4016 12345 11463 10746 6610 8022

  • 17 72 107 65 115 110 53 97 45 86 71 49 45 107 51 63 53 31 */ public class Main {

    public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNext()){ //获取序列I String orderI = sc.nextLine(); //获取序列R String orderR = sc.nextLine(); String[] strsI = removeFirstElement(orderI.split(" ")); String[] strsR = removeFirstElement(orderR.split(" ")); List listI = new ArrayList<>(Arrays.asList(strsI)); List listR = new ArrayList<>(Arrays.asList(strsR)); //再对序列R进行排序和去重处理 listR = listR.stream().sorted(new Comparator() { @Override public int compare(String o1, String o2) { return Integer.parseInt(o1) - Integer.parseInt(o2); } }).distinct().collect(Collectors.toList()); Map<Map<Integer,String>,Integer> kindCountMap = new LinkedHashMap<>(); List numList = new ArrayList<>(); for (String s : listR) { int count = 0; Map<Integer,String> map = new LinkedHashMap<>(); for (int i = 0; i < listI.size(); i++) { if(listI.get(i).contains(s)){ count++; map.put(i,listI.get(i)+" "+s); } } if(count != 0) { numList.add(s); kindCountMap.put(map, count); } } int keyValueCount = 0; Set<Map<Integer, String>> keySet = kindCountMap.keySet(); for (Map<Integer, String> map : keySet) { keyValueCount = keyValueCount + kindCountMap.get(map) * 2; } int totalCount = keyValueCount + kindCountMap.size() + numList.size(); System.out.print(totalCount+" "); List<Map<Integer,String>> mapList = new ArrayList<>(keySet); for (int i = 0; i < numList.size();i++){ System.out.print(numList.get(i)+" "+kindCountMap.get(mapList.get(i))+" "); Set set = mapList.get(i).keySet(); for (Integer integer : set) { System.out.print(integer+" "+mapList.get(i).get(integer).split(" ")[0]+" "); } } System.out.println(); } }

    private static String[] removeFirstElement(String[] strs){ String[] newStrs = new String[strs.length-1]; System.arraycopy(strs,1,newStrs,0,strs.length-1); return newStrs; }

}