1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
| # 더 많은 정보는 42jerrykim.github.io 에서 확인하세요.
# 참고: 본 문제의 핵심은 "현재 x에 의존하는 순서"를 유지하는 균형 BST가 필요합니다.
# 파이썬 표준 라이브러리만으로는 비교자가 동적으로 변하는 정렬 집합을 직접 제공하지 않으므로
# 실전 제출은 C++ 권장입니다. 아래는 로직 스켈레톤입니다.
import sys
input = sys.stdin.readline
def solve():
N = int(input())
segs = []
for _ in range(N):
x1, y1, x2, y2 = map(int, input().split())
if x1 < x2:
xl, yl, xr, yr = x1, y1, x2, y2
else:
xl, yl, xr, yr = x2, y2, x1, y1
low_x, low_y = (xl, yl) if yl <= yr else (xr, yr)
segs.append((xl, yl, xr, yr, low_x, low_y))
x0 = int(input())
# 이벤트 생성: (x, type, id) — type: 0 insert, 1 lowpoint, 2 start, 3 remove
events = []
for i, (xl, yl, xr, yr, low_x, low_y) in enumerate(segs):
events.append((xl, 0, i))
events.append((low_x, 1, i))
events.append((xr, 3, i))
events.append((x0, 2, -1))
events.sort()
# 실제 제출은 C++ 구현 권장.
# 여기서는 알고리즘 개요만 유지합니다.
print(x0)
if __name__ == "__main__":
solve()
|