허브타운

각 시민을 가장 가까운 두 방향의 열차 선로 중 하나에 배정하되 선로 정원을 넘지 않게 해서 배정 인원의 최댓값을 구한다.

어려움8그리디정렬기하투 포인터아직 제출이 없습니다시간 제한10초메모리 제한512 MB

문제

허브타운은 시민 nn명이 사는 북유럽의 큰 도시다. 매일 아침 시민은 저마다 도시 이름의 유래가 된 중앙 허브로 가려 하고, 도시를 지나는 통근 열차 mm개 중 하나를 탄다. 각 열차 노선은 반직선, 즉 한쪽 방향으로 무한히 뻗는 선분이며 좌표 (0,0)(0, 0)에 있는 중앙 허브에서 끝난다. 노선마다 태울 수 있는 인원에 한계가 있고 그 값은 노선마다 다를 수 있다. 그래서 정원이 차는 노선이 생기고, 타지 못한 시민은 자동차로 출근한다. 시의회는 자동차로 가는 사람 수를 최소로 줄이려 한다. 이를 위해 어느 시민이 어느 열차를 타도 되는지 지시를 내린다.

시민은 항상 자기 집에서 각거리가 가장 가까운 노선을 탄다. 다만 두 노선의 정확히 한가운데에 있는 시민은 둘 중 어느 쪽이든 탈 수 있고, 그 시민을 어느 노선에 태울지는 시의회가 정한다.

아래 그림은 첫 번째 예제를 나타낸다. 점선 화살표는 각 시민에게 가장 가까운 노선을 가리킨다. 여기서 재는 값은 유클리드 거리가 아니라 각거리다.

아침에 열차로 중앙 허브에 갈 수 있는 시민 수의 최댓값을 구하라. 열차를 타는 시민은 모두 자기 집에서 각거리가 가장 가까운 노선 가운데 하나를 타야 하고, 어떤 노선도 정원을 넘겨 태울 수 없다.

입력

첫째 줄에 정수 nnmm이 주어진다. nn은 시민 수로 0n2000000 \le n \le 200000이고, mm은 열차 노선 수로 1m2000001 \le m \le 200000이다.

다음 nn개 줄에는 각각 정수 xxyy가 주어진다. 시민 한 명이 사는 집의 직교좌표다. 중앙 허브에 사는 시민은 없다.

그다음 mm개 줄에는 각각 정수 xx, yy, cc가 주어지며 열차 노선 하나를 나타낸다. 점 (x,y)(x, y)는 중앙 허브가 아닌 점이고 노선은 이 점을 지난다. cc는 그 노선의 정원으로 0cn0 \le c \le n이다. 열차 노선은 (0,0)(0, 0)에서 출발해 (x,y)(x, y)를 지나는 반직선이다.

시민의 집과 노선을 정하는 점의 좌표 xx, yy는 모두 절댓값이 1000 이하다. 서로 겹치는 열차 노선은 없다. 여러 시민이 같은 좌표에 살 수도 있다.

출력

열차로 중앙 허브에 갈 수 있는 시민 수의 최댓값을 정수 하나로 출력한다.