만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

떠오르는 탁구공

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

요약
단순 다각형 모양의 배와 그 아래에서 풀어주는 공의 x좌표가 주어질 때, 배를 위로 밀어 올리는 공의 개수를 셉니다.
난이도

보통10점 중 6점

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

문제

당신의 배가 가라앉았다. 그 배를 되찾고 싶다.

침몰선을 인양하는 가장 좋은 방법은 배 아래에 탁구공을 잔뜩 풀어놓는 것이다. 공은 수면으로 떠오르면서 부력으로 가라앉은 배도 함께 끌어올린다. 다만 공이 실제로 배를 밀어 올리는 동안에만 그렇다. 공이 배에서 미끄러져 빠지거나, 배를 지나쳐 떠가거나, 배 내부의 공기 방울에서 수면으로 나오면 배를 물 밖으로 들어 올리는 데 기여하지 못한다.

이미 배 아래에 공을 풀어놓았다. 그중 실제로 인양에 도움이 되는 공이 몇 개인지 세어 보자. 각 공을 놓은 위치는 정확히 알고 있고, 배의 정밀한 모델도 있다.

그림 2: 이 그림의 침몰선. 왼쪽에서 네 번째 공은 닻과 배 사이에 끼어 인양에 도움이 된다.

바다는 (x, y) 평면으로 주어진다. 수면은 y=0y = 0이고, 물이 있는 곳은 y≤0y \le 0인 영역이다. 침몰선은 이 평면 위의 2차원 다각형이다. 공은 침몰선 훨씬 아래에서 풀어놓는 점(부동소수점)이다.

공은 수면에 닿거나 모서리에 가로막히지 않는 한 곧장 위로 떠오른다. 모서리를 따라 위로 떠오를 수 있으면 그 모서리를 따라간다. 수평 모서리에 가로막히거나, 위로 이어지는 모서리가 없는 꼭짓점에 가로막히면 공은 갇힌다.

수면에 도달한 공은 배를 밀어 올리지 않는다. y=0y = 0 아래에서 배 밑에 갇힌 공은 여전히 배를 밀어 올리므로 센다.

참고: 이 방법은 통하지 않는다. 자신의 침몰선에서는 시도하지 마라.

입력

첫 줄에 정수 nn과 bb가 주어진다. 3≤n≤1033 \le n \le 10^3은 침몰선의 꼭짓점 개수이고, 1≤b≤2⋅1031 \le b \le 2 \cdot 10^3은 공의 개수이다.

다음 nn개의 줄에는 각각 정수 xx, yy가 주어진다. −105≤x,y≤105-10^5 \le x, y \le 10^5이며, 반시계 방향으로 나열된 다각형의 꼭짓점이다.

마지막 줄에는 공을 풀어놓은 x 좌표 bb개 x1,x2,…,xbx_1, x_2, \ldots, x_b가 주어진다. ∣xi∣≤105|x_i| \le 10^5이다. 공의 원래 y 좌표는 −105-10^5보다 아래에 있다.

침몰선은 단순 다각형이다. 변들은 공유하는 꼭짓점에서만 만나며, 각 꼭짓점에서는 두 변만 만난다. 배의 꼭짓점과 공의 x 좌표를 통틀어 같은 x 좌표는 없다.

출력

배를 밀어 올리는 공의 개수를 정수 하나로 출력한다.

예제2

  1. 예제 1

    입력
    4 4
    1 2
    4 -4
    6 0
    9 0
    2 3 5 8
    
    예상 출력
    2
    
  2. 예제 2

    입력
    17 5
    -28 2
    -15 -5
    -16 -4
    2 -5
    18 -1
    21 -7
    16 -7
    22 -9
    24 -8
    26 -2
    23 -6
    20 0
    28 2
    0 2
    1 15
    -1 15
    -2 2
    -20 -10 10 19 25
    
    예상 출력
    3