CF1970B3.Exact Neighbours (Hard)
提高+/省选-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
在最近食死徒对霍格华兹城堡发动了一些袭击之后,凤凰社决定将 n 个成员安置在霍格迈德村。这些房子将坐落在一片风景如画的正方形场地上。每个巫师都有自己的房子,每个房子都属于某个巫师。每栋房子将占据一个正方形的空间。
然而,正如你可能知道的,巫师是非常迷信的。在周末,每个巫师 i 都想参观距离自己房子ai(0≤ai≤n)的房子。
村里的道路是水平和垂直修建的,因此点(xi,yi)和(xj,yj)之间的距离在 n×n 域上是$ |x_{i} - x_{j}| + |y_{i} - y_{j}| $ 。巫师们相互了解和信任,所以当第二个巫师不在时,一个巫师可以去另一个巫师的家。建造的房子将会足够大,所有 n 个巫师都可以同时参观任何房子。
除此之外,每个巫师都必须能看到北边的霍格沃茨城堡和南边的禁林,所以其他巫师的房子不应该挡住视线。就村庄而言,这意味着在 n×n 域的每一列中,最多可以有一个房子,所以如果第 i 个房子有坐标(xi,yi),那么对于所有 i 不等于 j ,都有 xi=xj。
凤凰社还不知道是否有可能以这样的方式放置 n 栋房子,以满足所有 n 位巫师的参观和景观要求,所以他们请求您帮助设计这样的计划。
如果可以有一个正确的位置,其中第 i 个向导的房子离它有 ai 的距离,而第 i 个巫师的房子是他们列中唯一的房子,输出 YES,每个巫师的房子的位置,以及每个巫师周末应该去哪个向导的房子。
如果无法正确放置,则输出 NO。
输入格式
第一行包含 n (2≤n≤2×105),即要建造的房屋数量。
第二行包含从 a1 到 an 的n个整数。(0≤ai≤n)
输出格式
如果存在这样的放置,则在第一行输出 YES ;否则,输出 NO 。
如果答案是 YES,则输出 n+1 行描述放置的内容。
接下来的 n 行应该包含每个巫师的房屋 1≤xi,yi≤n 的位置。
最后一行的第 i 个元素应该包含巫师的索引,其房屋与第 i 个巫师的房屋正好相距 ai。如果有多个这样的巫师,你可以输出任何一个。
如果有多个房屋放置方式,你可以输出任意一个。
输入输出样例
输入#1
4 0 4 2 4
输出#1
YES 4 4 1 3 2 4 3 1 1 1 1 3
输入#2
4 1 3 0 1
输出#2
YES 2 1 4 1 1 1 3 1 3 3 3 1
输入解题思路,AI测评打分。不知道怎么写?