题目描述
附近的幼儿园最近设计了一款考验力量与灵活度、孩子们很喜欢的趣味游戏。游戏场地是一块平整大区域,被划分成 N×NN×NN×N 个小方格。
孩子们会在场地上摆放大块海绵立方体,立方体的边长和小方格边长相等。摆放时立方体四边和方格对齐,立方体也可以堆叠在其他立方体上方。
孩子们喜欢搭建堡垒、躲在里面玩耍,但每次都会弄得一团糟。因此每天幼儿园闭园前,老师要把所有立方体重新整理:所有立方体最终要集中摆成地面上的一块矩形区域,矩形里的每一个方格恰好只放 111 个立方体,矩形外的方格一个立方体都不能有。
移动规则:一次操作,只能将某一格最顶部的 111 个立方体,搬到任意另一个方格的顶端。
请编写程序:根据场地当前立方体的堆放状态,计算整理到目标矩形布局所需的最少移动次数。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
输入格式
第一行输入两个整数 NNN、MMM(1≤N≤1001 ≤ N ≤ 1001≤N≤100,1≤M≤N21 ≤ M ≤ N²1≤M≤N2),NNN 是场地边长,MMM 是场上立方体总数量。接下来 M 行,每行两个整数 RRR、CCC(1≤R,C≤N1 ≤ R,C ≤ N1≤R,C≤N),代表这个立方体被放置在坐标 (R,C)(R,C)(R,C) 的方格上。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
输出格式
输出最少需要的移动步数。题目保证一定存在可行方案。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
提示说明
第一个样例中:只需要把 (1,1)(1,1)(1,1) 位置其中一个立方体,移到 (1,2)(1,2)(1,2) 或者 (2,1)(2,1)(2,1) 即可。第三个样例中:把 (2,3)(2,3)(2,3) 的一个立方体移到 (3,3)(3,3)(3,3)、(4,2)(4,2)(4,2) 一个移到 (2,5)(2,5)(2,5)、(4,4)(4,4)(4,4) 一个移到 (3,5)(3,5)(3,5)。