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

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

마라톤 부분 코스

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

요약
체크포인트 좌표 갱신에 따라 구간마다 내부 점 하나를 건너뛰어 맨해튼 거리를 최소화한 경로 길이를 구합니다.
난이도

보통10점 중 7점

유형
세그먼트 트리, 수학
정답자
아직 제출이 없습니다

문제

베시는 마라톤을 즐겨 달리는 소이고, 동료 소가 달릴 마라톤 코스를 직접 설계한다. 가장 최근에 만든 코스는 체크포인트 NN개로 이루어지고, 소는 이 체크포인트를 주어진 순서대로 방문해야 한다.

코스가 도로가 격자로 놓인 도심에 있어서, 위치가 (x1,y1)(x_1, y_1)인 체크포인트와 위치가 (x2,y2)(x_2, y_2)인 체크포인트 사이의 거리는 ∣x1−x2∣+∣y1−y2∣|x_1 - x_2| + |y_1 - y_2|이다.

동료 소는 코스 전체를 완주할 체력이 없을지도 모른다. 그래서 베시는 부분 코스를 달리는 데 걸리는 시간을 알고 싶다. 부분 코스는 코스 전체에서 연속으로 잘라낸 체크포인트 구간이다. 소는 게을러서 부분 코스를 달릴 때 체크포인트 하나를 건너뛸 수 있고, 이동 거리의 합이 가장 작아지는 체크포인트를 고른다. 아무것도 건너뛰지 않아도 된다. 다만 부분 코스의 첫 번째 체크포인트와 마지막 체크포인트는 건너뛸 수 없다. 따라서 체크포인트가 한 개나 두 개인 부분 코스에는 건너뛸 체크포인트가 없다.

베시는 코스를 다듬으면서 체크포인트 위치를 옮겨 보려 한다. 위치를 바꾸는 갱신과 부분 코스를 묻는 질의를 주어진 순서대로 처리하라.

입력

첫째 줄에 NN과 QQ가 주어진다. (1≤N≤1000001 \le N \le 100000, 1≤Q≤1000001 \le Q \le 100000)

다음 NN개 줄에는 방문해야 하는 순서대로 체크포인트의 좌표 xx와 yy가 주어진다. 모든 좌표는 −1000-1000 이상 10001000 이하의 정수다.

다음 QQ개 줄에는 갱신 또는 질의가 한 줄에 하나씩 주어지고, 주어진 순서대로 처리해야 한다. 각 줄은 U I X Y 또는 Q I J 형식이다.

  • U I X Y는 II번 체크포인트의 위치를 (X,Y)(X, Y)로 바꾼다. (1≤I≤N1 \le I \le N, −1000≤X,Y≤1000-1000 \le X, Y \le 1000)
  • Q I J는 II번 체크포인트에서 JJ번 체크포인트까지의 부분 코스를 달릴 때 이동 거리 합의 최솟값을 묻는다. (1≤I≤J≤N1 \le I \le J \le N) 이때 II번과 JJ번을 제외한 체크포인트 중 최대 하나를 건너뛸 수 있다.

출력

Q 질의마다 이동 거리 합의 최솟값을 한 줄에 출력한다.

예제4

  1. 예제 1

    입력
    5 5
    -4 4
    -5 -3
    -1 5
    -3 4
    0 5
    Q 1 5
    U 4 0 1
    U 4 -1 1
    Q 2 4
    Q 1 4
    
    예상 출력
    11
    8
    8
    
  2. 예제 2

    입력
    1 3
    7 -7
    Q 1 1
    U 1 -1000 1000
    Q 1 1
    
    예상 출력
    0
    0
    
  3. 예제 3

    입력
    2 4
    0 0
    3 4
    Q 1 2
    Q 2 2
    U 2 -5 -5
    Q 1 2
    
    예상 출력
    7
    0
    10
    
  4. 예제 4

    입력
    3 3
    0 0
    1000 1000
    1 0
    Q 1 3
    U 2 0 1
    Q 1 3
    
    예상 출력
    1
    1