Java Priority Queue

  • + 0 comments
    import java.io.*;
    import java.util.*;
    
    class Student {
        int id;
        String name;
        double cgpa;
    
        Student(int id, String name, double cgpa) {
            this.id = id;
            this.name = name;
            this.cgpa = cgpa;
        }
    }
    
    
    
    public class Solution {
        
        public static List<Student> solve(List<String> events){
            PriorityQueue<Student> pq= new PriorityQueue<>((a,b)->{
               if(a.cgpa!=b.cgpa) return Double.compare(b.cgpa, a.cgpa);
               if (!a.name.equals(b.name)) return a.name.compareTo(b.name);
               return Integer.compare(a.id, b.id);
                
            });
            
            for (String event : events) {
                String[] parts = event.split(" ");
                if (parts[0].equals("ENTER")) {
                    String name = parts[1];
                    double cgpa = Double.parseDouble(parts[2]);
                    int id = Integer.parseInt(parts[3]);
                    pq.add(new Student(id, name, cgpa));
                } else if (!pq.isEmpty()) {
                    pq.poll();
                }
            }
    
            List<Student> remaining = new ArrayList<>();
            while (!pq.isEmpty()) remaining.add(pq.poll());
            return remaining;
            
            
        };
    
        public static void main(String[] args) {
            /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
            
            Scanner sc = new Scanner(System.in);
            int n = Integer.parseInt(sc.nextLine());
            List<String> events = new ArrayList<>();
            while (n-- > 0) events.add(sc.nextLine());
            
            List<Student> st=solve(events);
             if (st.isEmpty()) System.out.println("EMPTY");
            else for (Student s : st) System.out.println(s.name);
            
            
            
            
        }
    }