CF1173B Nauuo and Chess

题目描述

Nauuo 是一个喜欢下棋的女孩。 有一天,她自己发明了一种游戏,需要用 $n$ 个棋子在一个 $m\times m$ 的棋盘上进行。棋盘的行和列编号均从 $1$ 到 $m$。我们用 $(r, c)$ 表示第 $r$ 行第 $c$ 列的格子。 游戏的目标是将编号为 $1$ 到 $n$ 的 $n$ 个棋子放在棋盘上,第 $i$ 个棋子放在 $(r_i, c_i)$,同时满足以下规则:对于所有棋子对 $i$ 和 $j$,都有 $|r_i - r_j| + |c_i - c_j| \ge |i - j|$。其中 $|x|$ 表示 $x$ 的绝对值。 然而,Nauuo 发现有时候棋盘太小,她无法找到满足条件的方案。 她想知道,最小需要多大的棋盘,才能按照规则放下 $n$ 个棋子。 她还想知道,在这样最小的棋盘上,应该如何放置这些棋子。你能帮帮她吗?

输入格式

一行一个整数 $n$($1 \le n \le 1000$),表示游戏所需的棋子数量。

输出格式

第一行输出一个整数,表示最小的 $m$,即满足条件的棋盘边长。 接下来 $n$ 行,每行两个整数 $r_i$ 和 $c_i$($1 \le r_i, c_i \le m$),表示第 $i$ 个棋子的坐标。 如果有多组答案,输出任意一组均可。

说明/提示

在第一个样例中,你无法在 $1\times1$ 的棋盘上放下两个棋子而不违反规则。但你可以在 $2\times2$ 的棋盘上这样放置两个棋子: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1173B/19a9324ad1d9f76a12004b1e06e1a6fc8ea5363a.png) 在第二个样例中,你无法在 $2\times2$ 的棋盘上放下四个棋子而不违反规则。例如,如果你这样放置棋子: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1173B/dd0c838eb5fa429a4dd839467d147e6034fac9bb.png) 那么 $|r_1 - r_3| + |c_1 - c_3| = |1-2| + |1-1| = 1$,$|1-3| = 2$,$1 < 2$;并且 $|r_1 - r_4| + |c_1 - c_4| = |1-2| + |1-2| = 2$,$|1-4| = 3$,$2 < 3$。这不满足规则。 然而,在 $3\times3$ 的棋盘上,你可以这样放置四个棋子: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1173B/b7f6bf4dffb399263283db89988092d0fdbbac58.png) 由 ChatGPT 4.1 翻译