#D1243. 割圆

    ID: 273 传统题 1000ms 256MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>基础算法模拟语言入门数组二级

割圆

当前没有测试数据。

题目描述

本题将实现一个简化版的 “割圆” 游戏。成功点亮所有灯时,联结第一个和最后一个灯称之为 “割线”。

nn 盏灯环形分布,顺序编号为 11nn。灯的初始状态为关闭不亮。假设 nn77,则第 11 号灯与第 2277 号灯相邻,第 22 号灯与第 1133 号灯相邻,以此类推。

灯的点亮规则如下:

  1. 输入 mm 个数,每个数为某个灯的编号,可能重复或只是部分编号;
  2. mm 个数中的第 11 个数所对应的灯,默认点亮;
  3. 如果输入数对应灯的左侧或右侧已被点亮,则点亮自身。否则啥也不做;
  4. 如果所有的灯都已被点亮,则程序结束,mm 个数中尚未被处理的数将不再处理;
  5. 输出第 11 次和最后一次点亮灯的编号;
  6. 如果 mm 个数处理完毕尚未点亮所有灯,则输出 No

输入格式

第一行 22 个整数 nnmm,保证 3n10003 \le n \le 10001m100001 \le m \le 10000

第二行 mm 个数,每个数都在 11nn 之间,表示输入序列。

输出格式

如果完成了 “割圆”,则输出两个整数,之间用一个空格隔开,否则输出 No

7 10
2 3 1 7 5 6 5 4 4 2
2 4
  • 11 个数 22,直接被点亮;
  • 22 个数 3333 与已亮的 22 相邻,被点亮;
  • 33 个数 1111 与已亮的 22 相邻,被点亮;
  • 44 个数 7777 与已亮的 11 相邻,被点亮;
  • 55 个数 55554466 相邻,但 4466 都没亮,什么都不做;
  • 66 个数 6666 与已亮的 77 相邻,被点亮;
  • 77 个数 5555 与已亮的 66 相邻,被点亮;
  • 88 个数 4444 与已亮的 55 相邻,被点亮;
  • 此时,所有的数都被点亮,第 11 个点亮的是 22,最后点亮的是 44