아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

전함

시간 제한6초메모리 제한256 MB

요약
각 함선은 격자 위의 선분이고, 수평 또는 수직 레이저를 쏠 때마다 그 선과 닿는 함선이 모두 제거되며, 매 발사마다 제거된 함선 중 가장 무거운 무게를 출력한다.
난이도

어려움10점 중 8점

유형
그래프, 시뮬레이션, 유니온 파인드, 해시맵
정답자
아직 제출이 없습니다

문제

홍준이는 대한민국의 자랑스러운 해군이다. 오늘은 전함을 타고 적과 싸우는 상황을 가정한 실전 연습을 한다.

전장은 n×nn \times n 크기의 격자이다. 가장 왼쪽 아래 점의 좌표는 (1,1)(1, 1), 가장 오른쪽 위 점의 좌표는 (n,n)(n, n)이다. 적 함대는 전함 kk개로 이루어져 있다. 각 전함 ii는 두 끝점 (xi,yi)(x_i, y_i), (xi′,yi′)(x'_i, y'_i)를 잇는 길이가 00보다 큰 선분이며, 무게는 wiw_i이다.

홍준이는 전함을 부수기 위해 레이저 대포를 모두 ll번 발사한다. 대포는 수직 또는 수평으로 발사할 수 있다.

  • 수직 발사: 레이저는 (a,1)(a, 1)과 (a,n)(a, n)을 잇는 선분이며, 이 선분과 만나는(끝점 포함) 전함을 모두 파괴한다.
  • 수평 발사: 레이저는 (1,a)(1, a)와 (n,a)(n, a)를 잇는 선분이며, 이 선분과 만나는(끝점 포함) 전함을 모두 파괴한다.

레이저를 발사할 때마다, 그 발사로 파괴된 전함 중 가장 무거운 전함의 무게를 보고해야 한다. 이미 파괴된 전함은 이후 발사에서 다시 파괴되지 않는다.

모든 전함의 위치와 발사한 레이저의 정보가 순서대로 주어질 때, 각 발사마다 파괴된 전함 중 가장 무거운 무게를 구하는 프로그램을 작성하시오. 파괴된 전함이 없으면 00을 보고한다.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다.

각 테스트 케이스의 첫째 줄에는 격자의 크기 nn, 전함의 수 kk, 대포 발사 횟수 ll이 주어진다. (1≤n≤1091 \le n \le 10^9, 1≤k,l≤1051 \le k, l \le 10^5)

이어지는 kk개의 줄에는 각 전함을 나타내는 다섯 정수 xx, yy, x′x', y′y', ww가 주어진다. 이는 전함의 두 끝점 (x,y)(x, y), (x′,y′)(x', y') (1≤x,y,x′,y′≤n1 \le x, y, x', y' \le n)와 무게 ww (1≤w≤1061 \le w \le 10^6)를 뜻한다. 각 전함의 길이는 항상 00보다 크다.

그 다음 ll개의 줄에는 각 발사를 나타내는 두 정수 aa와 bb가 주어진다. (1≤a≤n1 \le a \le n, b∈{0,1}b \in \{0, 1\}) b=0b = 0이면 (1,a)(1, a)와 (n,a)(n, a)를 잇는 수평 발사, b=1b = 1이면 (a,1)(a, 1)과 (a,n)(a, n)을 잇는 수직 발사이다.

출력

각 테스트 케이스마다 ll개의 줄을 출력한다. ii번째 줄에는 ii번째 레이저 발사로 파괴된 전함 중 가장 무거운 전함의 무게를 출력한다. 파괴된 전함이 없으면 00을 출력한다.

예제3

  1. 예제 1

    입력
    2
    5 5 2
    1 2 2 5 1
    1 4 2 1 2
    3 5 5 4 4
    3 1 3 2 3
    3 3 5 3 5
    4 1
    4 0
    5 2 2
    3 1 1 3 2
    4 5 1 1 3
    4 1
    4 0
    
    예상 출력
    5
    2
    3
    0
    
  2. 예제 2

    입력
    1
    10 1 1
    2 3 6 8 100
    4 1
    
    예상 출력
    100
    
  3. 예제 3

    입력
    1
    10 1 1
    2 3 6 8 100
    8 1
    
    예상 출력
    0