240121 - 割圆

题目描述

割圆游戏规则说明

本题目目标是实现一个简化版的“割圆”游戏,通过特定的规则来点亮环形分布的一系列灯。

游戏背景

游戏开始时,共有n盏灯环形分布,编号顺序为1n,初始状态下所有灯均为关闭状态。例如,若n7,则第1号灯与第2号和第7号灯相邻,第2号灯与第1号和第3号灯相邻,以此类推。成功点亮所有灯并将第一个和最后一个灯联结的情军称作“割线”。

游戏规则

  1. 输入m个数,每个数代表某个灯的编号,并且输入的数可能有重复或仅包含部分编号。
  2. 1个输入的数所对应的灯将被自动点亮。
  3. 若输入数对应的灯的左侧或右侧灯已被点亮,则该灯也会被点亮。如果没有,则不进行操作。
  4. 当所有的灯都被点亮后,游戏结束。此时,若存在尚未处理的输入数,则这些数将不再被处理。
  5. 输出第一次和最后一次点亮灯的编号。
  6. 如果处理完所有的m个输入数后未能点亮所有灯,则输出No

请根据以上规则进行游戏实现。

输入
  • 第一行包含两个整数nm,满足条件3 <= n <= 10001 <= m <= 10000
  • 第二行包含m个整数,每个整数都在1n之间,表示输入序列。
输出

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

样例

输入

7 10 
2 3 1 7 5 6 5 4 4 2 

输出

2 4 
说明

提示

  • 第1个数2,直接被点亮;
  • 第2个数33与已亮的2相邻,被点亮;
  • 第3个数11与已亮的2相邻,被点亮;
  • 第4个数77与已亮的1相邻,被点亮;
  • 第5个数5546相邻,但46都没亮,什么都不做;
  • 第6个数66与已亮的7相邻,被点亮;
  • 第7个数55与已亮的6相邻,被点亮;
  • 第8个数44与已亮的5相邻,被点亮;
  • 此时,所有的灯都被点亮,第1个点亮的是2,最后点亮的是4
标签
题目参数
时间限制 1 秒
内存限制 128 MB
提交次数 59
通过人数 37
金币数量 2 枚
难度 基础


上一题 下一题