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

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

램프

시간 제한5초메모리 제한512 MB

요약
10m 떨어진 두 평행 벽에 직사각형 창문들이 있고 한 벽에 램프가 있을 때, 반사된 빛이 닿을 수 있는 램프 쪽 건물의 창문 개수를 센다.
난이도

어려움10점 중 8점

유형
기하, 구현, 수학, 시뮬레이션
정답자
아직 제출이 없습니다

문제

한밤중에 비트라티오(Bitratio)가 비트아사르(Byteasar)가 사는 건물 입구의 램프를 켰다. 강한 불빛 때문에 비트아사르는 잠을 이룰 수 없다. 램프가 그의 창문을 직접 비추지는 않지만, 다른 창문에 반사되어 빛이 창문에 닿는다. 비트아사르는 이웃들도 같은 고통을 겪는지, 즉 그 빛이 이웃의 창문에도 닿는지 궁금해한다. 이 물음에 답하는 프로그램을 작성하자.

비트아사르는 건물 BB에 살고 있으며, 이 건물에는 창문이 nn개 있다. 램프는 이 건물 벽의 가장 아래쪽에 놓여 있다. 건물 BB의 정면으로 정확히 1010미터 떨어진 곳에 창문이 mm개인 또 다른 건물 CC가 있고, CC의 벽은 BB의 벽과 평행하다.

빛은 기하 광학(광선 광학)을 따른다. 즉 빛은 직선 광선으로 나아가고, 광선이 창문에 닿으면 반사되며, 반사각은 입사각과 같다.

두 벽에는 다음과 같이 좌표계를 둔다. 두 벽 모두 XX축은 수평, YY축은 수직이며, 두 벽의 축은 같은 방향을 가리키고, 두 원점 (0,0)(0, 0)은 서로 마주 본다. 모든 창문은 (어느 건물이든) 변이 좌표축과 평행한 직사각형이다. 광선은 창문의 내부에서만 반사되고, 창문의 경계에서는 흡수된다. 한 건물 안에서 서로 다른 두 창문은 내부를 공유하지 않는다. 램프는 건물 BB의 벽 위 점 (0,0)(0, 0)에 있으며, 이 점은 어떤 창문의 내부에도 경계에도 있지 않다.

입력

첫째 줄에 두 정수 nn과 mm (1≤n,m≤6001 \le n, m \le 600)이 공백 하나로 구분되어 주어진다. 각각 건물 BB와 건물 CC의 창문 개수이다.

다음 nn개의 줄에는 건물 BB의 창문이 한 줄에 하나씩 주어진다. i+1i + 1번째 줄(1≤i≤n1 \le i \le n)에는 네 정수 x1,ix_{1,i}, y1,iy_{1,i}, x2,ix_{2,i}, y2,iy_{2,i} (−1000≤x1,i<x2,i≤1000-1000 \le x_{1,i} < x_{2,i} \le 1000, 0≤y1,i<y2,i≤10000 \le y_{1,i} < y_{2,i} \le 1000)가 공백으로 구분되어 주어진다. 건물 BB의 ii번째 창문은 왼쪽 아래 꼭짓점이 (x1,i,y1,i)(x_{1,i}, y_{1,i}), 오른쪽 위 꼭짓점이 (x2,i,y2,i)(x_{2,i}, y_{2,i})인 직사각형이며 단위는 미터이다.

그다음 mm개의 줄에는 건물 CC의 창문이 같은 형식으로 주어진다.

출력

첫째 줄에 건물 BB의 창문 중 내부가 적어도 하나의 광선에 맞는 창문의 개수를 출력한다. 모든 입력에는 그러한 창문이 적어도 하나(비트아사르 자신의 창문) 존재함이 보장된다.

둘째 줄에 그 창문들의 번호(창문은 11번부터 매긴다)를 오름차순으로 공백 하나로 구분하여 출력한다.

예제2

  1. 예제 1

    입력
    3 3
    -1 2 1 4
    -1 5 1 7
    -3 8 -2 20
    -1 1 1 2
    -1 4 1 5
    -1 7 1 10
    
    예상 출력
    2
    1 2
    
  2. 예제 2

    입력
    1 1
    -1 3 1 5
    -1 1 1 3
    
    예상 출력
    1
    1