#P8064. [BalkanOI 2012] Spiral

[BalkanOI 2012] Spiral

题目背景

你心血来潮,去公园里骑车。

题目描述

公园可以看成一个 N×NN\times N 的网格,第 ii 行,第 jj 列的格子坐标为 (i,j)(i,j)。每个格子是可以走的道路或不能走的喷泉。

你想骑出一条螺旋路径。

  • 螺旋路径的定义为:从一个格子出发,向一个方向走至少 11 格,进行右转,再走至少 11 格,进行右转,再走至少 11 格,进行右转,再走至少 11 格(只右转三次)。
  • 在螺旋路径中不能经过喷泉。

现在你想找出你能骑的最长螺旋路径(路径长度为经过的格子数,含首尾)。

保证存在一条螺旋路径。

输入格式

输入的第一行包含两个整数 NNKK,分别是公园的大小和喷泉的数量。

接下来 KK 行每行 22 个整数 xxyy,表示在坐标为 (x,y)(x,y) 的格子上有一个喷泉。

输出格式

一行一个整数,你能骑的最长路线(即最长螺旋路径)。

6 9
2 1
2 4
4 4
6 2
6 3
5 3
4 6
5 1
2 6
14

提示

数据范围:

Subtask#0 为样例。

2N10002\le N\le 10000Kmin(2000,N2)0\le K\le \min(2000,N^2)1x,yN1\le x,y\le N

样例解释:

公园如图所示,最右边图是最长螺旋路径,路径长度为 1414,没有更长的路径。

注:前两幅图均为合法螺旋路径,帮助理解。