P4648 [IOI 2007] pairs 动物对数

题目描述

Mirko 和 Slavko 正在玩动物玩具的游戏。 首先,他们要在下图给出的三种玩具模板中选择一种。三种模板分别由一维、二维和三维的网格点(在图中用圆圈表示)组成。 ![](https://cdn.luogu.com.cn/upload/pic/20672.png ) 接下来Mirko 把 $N$ 个小动物玩具放到选中的模板的网格点上。 动物玩具可以走一步到达与它相邻的网格点上(在图中相邻的点之间有一条小短线相连)。两个网格点之间的距离定义为**从一个网格点到另一个网格点所需要移动的最小步数**。 如果两个动物之间的距离小于等于$D$,则它们之间可以互相听见。Slavko 的任务是计算在模板上有多少对动物可以互相听得见。 给定模板的类型、所有动物的位置以及数字$D$,写一个程序计算有多少对动物可以互相听得见。

输入格式

输出格式

说明/提示

在30分的测试数据中, 动物数目 $N$ 最多是 $1 000$。 如果成功通过了某一种模板(一维、二维或者三维)的全部测试数据,将会得到至少30分。 对于input 1的解释: 假设动物按给出的顺序编号为$1$到$6$。$4$对互相能够听得到的动物分别是: - 1-5 ( 距离是5) - 1-6 ( 距离是2) - 2-3 ( 距离是0) - 5-6 ( 距离是3) 对于input 2 的解释:$8$对动物分别是: - 1-2 ( 距离是2) - 1-4 ( 距离是4) - 1-5 ( 距离是3) - 2-3 ( 距离是3) - 2-4 ( 距离是4) - 3-4 ( 距离是3) - 3-5 ( 距离是4) - 4-5 ( 距离是3)