#P6844. [CEOI2019] Building Skyscrapers
[CEOI2019] Building Skyscrapers
题目描述
在 2D 平面上,有 个计划建摩天楼的格子,第 座计划建的摩天楼的格子位于 。
您可以选择任意一种建摩天楼的顺序,但是要满足如下设定:
- 设建摩天楼的顺序为 。
- 对于任意 ,都要保证,第 座至少和前面任意一座摩天楼有公共边或公共角。
- 对于任意 ,都要保证,从第 座计划建摩天楼的格子到 2D 平面的边界,有路径相连(从一个格子只能走到与其有公共边的格子),且路径上除第 座摩天楼无其他摩天楼。
同时会输入一个 ,表示输出的类别:
- 若 ,您需要构造任意一种建造的顺序。
- 若 ,您需要构造 字典序最大的建造顺序。
输入格式
第一行一个整数 。
第二行一个整数 。
接下来 行,每行两个整数 ,第 行表示第 座计划建的摩天楼的坐标为 。
输出格式
第一行为一个字符串 YES
或者 NO
,表示是否有一种可行的方案。
若有一种可行的方案,接下来输出 行,一行一个整数表示您构造的方案。
- 若 ,您需要构造任意一种建造的顺序。
- 若 ,您需要构造 字典序最大的建造顺序。
3
2
0 0
0 1
0 2
YES
1
2
3
3
1
0 0
1 1
2 2
YES
2
3
1
2
1
0 0
0 2
NO
提示
样例解释
样例 1 解释
这是三个摩天楼连成一行,自然有如下几种解:
因为 ,所以输出第一种。
样例 2 解释
和样例 1 的区别只是三个摩天楼连成一条对角线,与样例 1 的解一致,又因为 ,随便输出一组即可。
样例 3 解释
两个摩天楼无相交部分,自然无法建立。
数据范围
对于 的数据,保证 ,,。
详细子任务限制及分值如下表:
子任务编号 | 限制 | 分值 |
---|---|---|
1 | 且 | |
2 | 且 | |
3 | 且 | |
4 | 且 | |
5 | ||
6 | , 且 | |
7 |
说明
本题译自 Central-European Olympiad in Informatics 2019 Day 1 T1 Building Skyscrapers。