나선

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

요약
분수가 있는 칸을 피해 N x N 격자에서 오른쪽으로만 네 번 꺾는 네 구간 경로 중 가장 긴 길이를 구한다.
난이도

보통10점 중 7점

유형
완전 탐색, 구현, 누적 합, 기하
정답자
아직 제출이 없습니다

문제

칼레메그단(Kalemegdan) 공원은 베오그라드에서 가장 큰 공원이다. 이 공원을 N×NN \times N 격자, 즉 N2N^2개의 칸으로 생각하자. 어떤 칸에는 분수가 있고, 나머지 칸은 모두 빈 칸이다. 라이더는 변을 공유하는(상·하·좌·우로 인접한) 두 빈 칸 사이에서만 이동할 수 있다.

라이더는 나선 경로만 좋아한다. 나선 경로는 다음과 같이 만든다. 먼저 출발할 빈 칸과 시작 방향(북·동·남·서 중 하나)을 고른다. 그 방향으로 한 칸 이상 이동한 뒤 오른쪽으로 90도 회전하고, 새 방향으로 한 칸 이상 이동한 뒤 다시 오른쪽으로 90도 회전하고, 또 한 칸 이상 이동한 뒤 마지막으로 한 번 더 오른쪽으로 90도 회전하여 다시 한 칸 이상 이동한다. 따라서 경로는 정확히 네 개의 직선 구간으로 이루어지며, 모든 회전은 시계 방향이다.

경로는 분수가 있는 칸을 지날 수 없고, 같은 칸을 두 번 방문할 수도 없다. 나선 경로의 길이는 그 경로가 지나는 칸의 개수이다(즉, 이동한 총 걸음 수에 1을 더한 값과 같다).

위 그림은 N=6N = 6인 공원(검은 칸이 분수)과 가능한 몇 가지 나선 경로를 보여 준다.

라이더가 갈 수 있는 가장 긴 나선 경로의 길이를 출력하여라.

입력

첫째 줄에 두 정수 NN과 KK가 주어진다. 각각 정사각형 공원의 한 변의 길이와 분수의 개수이다.

이어지는 KK개의 줄에는 각각 분수 하나의 좌표를 나타내는 두 정수 xx, yy가 주어진다. 칸 (x,y)(x, y)는 위에서부터 xx번째 행, 왼쪽에서부터 yy번째 열에 있다. 따라서 (1,1)(1, 1)은 왼쪽 위 칸이고 (N,1)(N, 1)은 왼쪽 아래 칸이다. 북쪽은 위, 동쪽은 오른쪽, 남쪽은 아래, 서쪽은 왼쪽을 뜻한다.

출력

가장 긴 나선 경로의 길이를 정수 하나로 출력하여라. 나선 경로는 적어도 하나 존재함이 보장된다.

제한

  • 2≤N≤10002 \le N \le 1000
  • 0≤K≤min⁡(2000,N2)0 \le K \le \min(2000, N^2)
  • 1≤x,y≤N1 \le x, y \le N

예제3

  1. 예제 1

    입력
    6 9
    2 1
    2 4
    4 4
    6 2
    6 3
    5 3
    4 6
    5 1
    2 6
    
    예상 출력
    14
    
  2. 예제 2

    입력
    3 0
    
    예상 출력
    8
    
  3. 예제 3

    입력
    6 7
    1 1
    1 6
    3 3
    3 4
    4 3
    6 1
    6 6
    
    예상 출력
    16