Skip to content

Commit 3e69994

Browse files
authored
Merge pull request #20 from AlgorithmWithGod/lkhyun
[20250203] BOJ / 골드5 / 모노톤길 / 이강현
2 parents 6387b9d + 39170c6 commit 3e69994

File tree

2 files changed

+70
-0
lines changed

2 files changed

+70
-0
lines changed
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
```java
2+
import java.io.BufferedReader;
3+
import java.io.BufferedWriter;
4+
import java.io.InputStreamReader;
5+
import java.io.OutputStreamWriter;
6+
import java.util.*;
7+
8+
class Point{
9+
int x;
10+
int y;
11+
Point(int x, int y){
12+
this.x = x;
13+
this.y = y;
14+
}
15+
}
16+
public class Main {
17+
static BufferedReader br;
18+
static BufferedWriter bw;
19+
public static void main(String[] args) throws Exception {
20+
br = new BufferedReader(new InputStreamReader(System.in));
21+
bw = new BufferedWriter(new OutputStreamWriter(System.out));
22+
int T = Integer.parseInt(br.readLine());
23+
for(int t=1;t<=T;t++){
24+
int N = Integer.parseInt(br.readLine());
25+
Map<Integer,PriorityQueue<Integer>> cafes = new TreeMap<>();
26+
for(int n = 0;n<N;n++){
27+
StringTokenizer st = new StringTokenizer(br.readLine());
28+
int key = Integer.parseInt(st.nextToken());
29+
int value = Integer.parseInt(st.nextToken());
30+
PriorityQueue<Integer> cafe = cafes.getOrDefault(key,new PriorityQueue<>());
31+
cafe.offer(value);
32+
cafes.put(key,cafe);
33+
}
34+
StringTokenizer st = new StringTokenizer(br.readLine());
35+
int M = Integer.parseInt(st.nextToken());
36+
Map<Integer,Point> cafenumbers = new HashMap<>();
37+
int prev = 0;
38+
int currentnumber = 0;
39+
for(Integer i : cafes.keySet()){
40+
PriorityQueue<Integer> cafe = cafes.get(i);
41+
if(cafe.peek() == prev){
42+
int j = 1;
43+
int temp = cafe.size();
44+
while(!cafe.isEmpty()){
45+
if(cafe.size()==1){prev = cafe.peek();}
46+
cafenumbers.put(currentnumber+j,new Point(i,cafe.poll()));
47+
j++;
48+
}
49+
currentnumber += temp;
50+
}
51+
else{
52+
int j = cafe.size();
53+
int temp = cafe.size();
54+
prev = cafe.peek();
55+
while(!cafe.isEmpty()){
56+
cafenumbers.put(currentnumber+j,new Point(i,cafe.poll()));
57+
j--;
58+
}
59+
currentnumber += temp;
60+
}
61+
}
62+
for(int m=0;m<M;m++){
63+
Point temp = cafenumbers.get(Integer.parseInt(st.nextToken()));
64+
bw.write(temp.x + " " + temp.y +"\n");
65+
}
66+
}
67+
bw.flush();
68+
}
69+
}
70+
```

0 commit comments

Comments
 (0)