#G3008. 跳格子
跳格子
题目描述
地上画着一排 个格子,从左到右编号为 。第 个格子里写着一个不为 的整数 。
小 F 从第 个格子出发,按下面的规则不停地跳:
- 站在第 个格子上时,下一跳跳到第 个格子( 为正数就往右跳,为负数就往左跳);
- 如果跳到的位置小于 或大于 ,就跳出了格子,游戏结束。
小 F 很快发现,有时候游戏永远不会结束:只要他又一次站到了之前站过的格子上,后面就会一遍又一遍地重复同一段路线。
请你判断游戏会怎样进行:
- 如果小 F 最终跳出了格子,输出
OUT和一个整数 ,表示他一共跳了 次(包括跳出去的那一次); - 否则,设小 F 在第 跳时第一次站到了一个之前站过的格子上(出发时站的格子 也算站过),而这个格子上一次是在第 跳之后站上的(出发时算第 跳),输出
LOOP、 和 ,其中 就是之后每循环一圈需要跳的次数。
输入格式
第一行两个整数 ,分别表示格子的个数和出发的格子编号。
第二行 个整数 。
输出格式
一行。若跳出格子,输出 OUT k;若陷入循环,输出 LOOP t L,其中 。
样例 #1
样例输入 #1
6 1
2 3 -1 -2 4 1
样例输出 #1
OUT 4
样例解释
路线是 。第 跳跳到了第 个格子,超出了 ,跳出格子。
样例 #2
样例输入 #2
7 1
1 2 1 2 1 -3 5
样例输出 #2
LOOP 5 3
样例解释
路线是
| 第几跳之后 | ||||||
|---|---|---|---|---|---|---|
| 站在第几格 |
第 跳时第一次站回了之前站过的格子 ,它上一次是第 跳之后站上的,所以 ,:之后会沿着 永远循环,每圈跳 次。
提示
数据范围
- 对于 的数据:保证小 F 最终会跳出格子,;
- 对于 的数据:;
- 对于 的数据:,。
提示
- 可以再开一个数组,记下每个格子是第几跳之后第一次站上的;还没站过的格子记成 。
- 小 F 每跳一次,要么跳出格子,要么站上一个新格子,要么站上一个旧格子。新格子最多只有 个,所以最多跳 次一定会有结果。