공원 산책
시간 제한2초메모리 제한128 MB
나무를 나타내는 점들과 나무를 지나지 않는 무한한 수평 또는 수직 경로가 주어질 때, 다른 나무에 가리지 않고 경로에서 수직 방향으로 보이는 나무의 수를 센다.
문제
당신은 공원의 나무들이 건강하게 유지되도록 점검하는 일을 맡았다. 각 나무는 2차원 평면 위의 한 점이며, 서로 다른 두 나무가 같은 위치에 있지 않다. 잔디를 새로 심었기 때문에, 당신은 정해진 길들만 따라 걸을 수 있다. 각 길은 평면 위의 무한히 긴 수평선 또는 수직선이며, 어떤 나무도 길 위에 있지 않다.
당신은 길에서 볼 수 없는 나무가 있을까 걱정된다. 어떤 나무는, 어떤 길 위에 서서 그 길에 수직인 방향을 바라볼 때 다른 나무가 시야를 가리지 않고 그 나무를 볼 수 있어야만 "보인다"고 한다. (수직인 길에서는 수평 방향을 바라보고, 수평인 길에서는 수직 방향을 바라본다.) 공원의 배치가 주어질 때, 보이는 나무의 개수를 구하여라.
입력
입력은 여러 개의 데이터 집합으로 이루어진다. 각 데이터 집합의 첫 줄에는 공백으로 구분된 두 정수 과 ()이 주어진다. 은 나무의 수, 은 길의 수이다.
이어지는 개의 줄에는 각각 공백으로 구분된 두 정수 와 가 주어지며, 이는 한 나무의 좌표이다. 와 는 임의의 32비트 정수일 수 있다.
이어지는 개의 줄에는 각각 하나의 길(수직선 또는 수평선)이 x=K 또는 y=K 형태로 공백 없이 주어진다. 여기서 x와 y는 소문자이고, 는 임의의 32비트 정수일 수 있다.
입력의 끝은 공백으로 구분된 두 개의 0으로 이루어진 줄로 나타낸다.
출력
각 데이터 집합마다 보이는 나무의 개수를 정수 하나로 한 줄에 출력한다. 출력 사이에 빈 줄을 넣지 않는다.