• + 0 comments

    JAVA15; import java.io.; import java.util.; import java.util.stream.*; import static java.util.stream.Collectors.toList;

    class Result {

    public static List<Integer> climbingLeaderboard(List<Integer> ranked, List<Integer> player) {
        // Remove duplicates and sort in descending order
        List<Integer> uniqueRanked = ranked.stream()
            .distinct()
            .sorted(Comparator.reverseOrder())
            .collect(Collectors.toList());
    
        List<Integer> result = new ArrayList<>();
        int index = uniqueRanked.size() - 1;
    
        for (int score : player) {
            while (index >= 0 && score >= uniqueRanked.get(index)) {
                index--;
            }
            result.add(index + 2); // +2 because index is 0-based and we want rank
        }
    
        return result;
    }
    

    }

    public class Solution { public static void main(String[] args) throws IOException { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));

        int rankedCount = Integer.parseInt(bufferedReader.readLine().trim());
        List<Integer> ranked = Arrays.stream(bufferedReader.readLine().trim().split(" "))
            .map(Integer::parseInt)
            .collect(toList());
    
        int playerCount = Integer.parseInt(bufferedReader.readLine().trim());
        List<Integer> player = Arrays.stream(bufferedReader.readLine().trim().split(" "))
            .map(Integer::parseInt)
            .collect(toList());
    
        List<Integer> result = Result.climbingLeaderboard(ranked, player);
    
        for (Integer rank : result) {
            bufferedWriter.write(rank.toString());
            bufferedWriter.newLine();
        }
    
        bufferedReader.close();
        bufferedWriter.close();
    }
    

    }