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

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

밭 잔디 깎기

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

요약
수평 구간과 수직 구간이 끝점이 아닌 점에서 만나고 자른 시점이 T일 이상 차이나는 교차점 개수를 구합니다.
난이도

어려움10점 중 8점

유형
세그먼트 트리, 기하, 슬라이딩 윈도우
정답자
아직 제출이 없습니다

문제

농부 존은 농장 일을 대체로 빈틈없이 해내지만 잔디 깎기만은 늘 늦는다. 잔디깎이를 하루에 한 번만 움직이기 때문이다. 1일째에 그는 (x1,y1)(x_1, y_1)에서 출발하고, dd일째에는 전날 위치에서 (xd,yd)(x_d, y_d)까지 직선으로 잔디를 깎으며 이동한다. 농장을 2차원 평면으로 보면 이 이동은 항상 가로 또는 세로다. 즉 xd=xd−1x_d = x_{d-1}이거나 yd=yd−1y_d = y_{d-1}이다. 존은 가로 이동과 세로 이동을 하루씩 번갈아 한다.

진도가 워낙 느려서 먼저 깎은 잔디가 작업이 끝나기 전에 다시 자란다. dd일째에 깎은 자리의 잔디는 d+Td + T일째에 되살아난다. 그래서 존의 경로가 TT일 이상 앞서 깎아 둔 경로와 만나면 같은 자리를 한 번 더 깎게 된다. 존은 자기 방식이 얼마나 나쁜지 확인하려고 이런 일이 몇 번 일어나는지 세려고 한다.

되살아난 잔디를 다시 깎게 되는 교차점의 개수를 세어라. 수직으로 만나는 경우만 센다. 즉 가로 선분과 세로 선분이 공유하는 점 중에서 두 선분 어느 쪽의 끝점도 아닌 점만 센다.

입력

첫째 줄에 NN (2≤N≤100 0002 \le N \le 100\,000)과 TT (1≤T≤N1 \le T \le N, TT는 짝수)가 주어진다.

다음 NN개 줄에는 1일째부터 NN일째까지 잔디깎이의 위치가 주어진다. ii번째 줄에는 정수 xix_i와 yiy_i가 주어지며, 둘 다 00 이상 10910^9 이하다.

연속한 두 위치가 같을 수도 있다. 그런 날의 이동은 한 점이므로 어떤 교차에도 관여하지 않는다.

출력

위에서 설명한 교차점의 개수를 출력한다.

힌트

첫 번째 예제에서 7일째 경로는 2일째에 깎은 선분과 만난다. 두 날의 간격이 T=4T = 4 이상이므로 이 교차는 개수에 들어간다. 나머지 두 교차는 간격이 3일뿐이라 세지 않는다.

예제2

  1. 예제 1

    입력
    7 4
    0 10
    10 10
    10 5
    3 5
    3 12
    6 12
    6 3
    
    예상 출력
    1
    
  2. 예제 2

    입력
    5 2
    0 4
    8 4
    8 8
    4 8
    4 0
    
    예상 출력
    1