Cod sursa(job #2170090)

Utilizator SlevySlevoaca Stefan-Gabriel Slevy Data 14 martie 2018 22:20:25
Problema Heapuri Scor 40
Compilator java Status done
Runda Arhiva educationala Marime 1.8 kb
import java.util.PriorityQueue;
import java.io.*;
import java.util.StringTokenizer;
import java.util.ArrayList;

class MyScanner implements AutoCloseable {
	 
   	private BufferedReader bufferedReader;
    private StringTokenizer stringTokenizer;

    MyScanner(String filename) throws FileNotFoundException {
        bufferedReader = new BufferedReader(new FileReader(filename));
    }

    private String next() throws IOException {
        while (stringTokenizer == null || !stringTokenizer.hasMoreElements()) {
            stringTokenizer = new StringTokenizer(bufferedReader.readLine());
        }

        return stringTokenizer.nextToken();
    }

    int nextInt() throws IOException {
        return Integer.parseInt(next());
    }

    public void close() throws IOException {
        bufferedReader.close();
  	}
}

public class Main {
	
	private static final String INPUT_FILE_PATH = "heapuri.in";
	private static final String OUTPUT_FILE_PATH = "heapuri.out";
	
	public static void main(String[] args) {
		
		PriorityQueue<Integer> heap = new PriorityQueue<>();
		ArrayList<Integer> entries = new ArrayList<>();
		
		int nrOp = 0;
		
		try (MyScanner in = new MyScanner(INPUT_FILE_PATH)) {
			
			nrOp = in.nextInt();
			int type = 0, elem = 0;
			PrintWriter out = new PrintWriter(OUTPUT_FILE_PATH);
			
			for (int i = 1; i <= nrOp; i++) {
				
				type = in.nextInt();
				
				switch (type) {
				
					case 1:
						elem = in.nextInt();
						entries.add(elem);
						heap.add(elem);
						break;
					case 2:
						elem = in.nextInt();
						heap.remove(entries.get(elem - 1));
						break;
					case 3:
						out.println(heap.peek());
						break;
				}
			}
			
			out.close();
			
		} catch (IOException ex) {
			
			ex.printStackTrace();
		}
	}
}