Lang:Java
Edit12345678910111213141516171819202122232425262728293031import java.util.*;public class Main {private static final int SUBJECTS_NUM = 5;public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int[][] search_ranks = new int[SUBJECTS_NUM][n]; // 第i科目第j名的号码int[][] ranks = new int[SUBJECTS_NUM][n]; // 第i科目第j人的排名for (int i = 0; i < n; i++) {for (int j = 0; j < SUBJECTS_NUM; j++) {int rank = sc.nextInt() - 1;search_ranks[j][rank] = i;ranks[j][i] = rank;}}BitSet[][] bitSets = new BitSet[SUBJECTS_NUM][n]; // 第i科,比第j名好的同学集合for (int i = 0; i < SUBJECTS_NUM; i++) {bitSets[i][0] = new BitSet(n);}for (int i = 0; i < SUBJECTS_NUM; i++) {for (int j = 1; j < n; j++) {bitSets[i][j] = (BitSet) bitSets[i][j - 1].clone();bitSets[i][j].set(search_ranks[i][j - 1]);}}for (int i = 0; i < n; i++) {int rank1 = ranks[0][i];BitSet bitSet = (BitSet) bitSets[0][rank1].clone();for (int j = 1; j < SUBJECTS_NUM; j++) {bitSet.and(bitSets[j][ranks[j][i]]);