P8064 [BalkanOI 2012] Spiral

题目背景

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

题目描述

公园可以看成一个 $N\times N$ 的网格,第 $i$ 行,第 $j$ 列的格子坐标为 $(i,j)$。每个格子是可以走的道路或不能走的喷泉。 你想骑出一条螺旋路径。 - 螺旋路径的定义为:从一个格子出发,向一个方向走至少 $1$ 格,进行右转,再走至少 $1$ 格,进行右转,再走至少 $1$ 格,进行右转,再走至少 $1$ 格(只右转三次)。 - 在螺旋路径中不能经过喷泉。 现在你想找出你能骑的最长螺旋路径(路径长度为经过的格子数,含首尾)。 保证存在一条螺旋路径。

输入格式

输入的第一行包含两个整数 $N$ 和 $K$,分别是公园的大小和喷泉的数量。 接下来 $K$ 行每行 $2$ 个整数 $x$ 和 $y$,表示在坐标为 $(x,y)$ 的格子上有一个喷泉。

输出格式

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

说明/提示

#### 数据范围: Subtask#0 为样例。 $2\le N\le 1000$,$0\le K\le \min(2000,N^2)$,$1\le x,y\le N$。 #### 样例解释: 公园如图所示,最右边图是最长螺旋路径,路径长度为 $14$,没有更长的路径。 ![](https://s4.ax1x.com/2021/12/07/ockbBq.md.jpg) 注:前两幅图均为合法螺旋路径,帮助理解。