[伯俊]112,79号:最大お尻
2862 ワード
📌 質問する
広く知られている資料構造の中で、最大のお尻があります.最大hipを使用して、次の演算をサポートするプログラムを作成します.
入力
第1行は、演算の個数N(1≦N≦100000)を与える.次のN行には、演算に関する情報を表す整数xが与えられる.xが自然数の場合、xを配列に追加する演算です.xが0の場合、配列の最大値が出力され、配列から削除されます.入力された自然数は231未満です.
しゅつりょく
入力では、0は所定の回数に等しく、答えを出力します.配列が空で、最大値を出力する必要がある場合は、0を出力します.
入力例1
13
0
1
2
0
0
3
2
1
0
0
0
0
0
サンプル出力10
2
1
3
2
1
0
0
📌 答えを出す.import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Collections;
import java.util.PriorityQueue;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static StringBuilder sb = new StringBuilder();
static int N;
static PriorityQueue queue = new PriorityQueue(Collections.reverseOrder());
public static void base() throws IOException {
N = Integer.parseInt(br.readLine());
}
public static void main(String[] args) throws IOException {
base();
for(int i=0; i<N; i++) {
int now = Integer.parseInt(br.readLine());
if(now == 0) {
if(queue.size() != 0) {
sb.append(queue.poll()).append("\n");
} else {
sb.append(0).append("\n");
}
} else {
queue.offer(now);
}
}
System.out.println(sb);
}
}
📌 説明する.import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.PriorityQueue;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static StringBuilder sb = new StringBuilder();
static int N;
static PriorityQueue<Integer> queue = new PriorityQueue<>();
public static void base() throws IOException {
N = Integer.parseInt(br.readLine());
}
public static void main(String[] args) throws IOException {
base();
for(int i=0; i<N; i++) {
int temp = Integer.parseInt(br.readLine());
if(temp == 0) {
if(queue.isEmpty())
sb.append(0).append("\n");
else
sb.append(queue.poll() * -1).append("\n");
} else {
queue.offer(temp * -1);
}
}
System.out.println(sb);
}
}
Reference
この問題について([伯俊]112,79号:最大お尻), 我々は、より多くの情報をここで見つけました https://velog.io/@h_seung2/백준-11279번-최대-힙テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol