#106. 士兵

士兵

题目描述

nn 名士兵参加了一场激烈的战斗。每个士兵身边有两个 伙伴,第 ii 号士兵的 左侧伙伴 编号为 i1i−1右侧伙伴 的编号为 i+1i+111 号士兵没有 左侧伙伴nn 号士兵没有 右侧伙伴

在战斗过程中,陆续牺牲了 mm 名士兵。一旦一名士兵牺牲了,存活的士兵就会相互接近,形成新的 伙伴 关系。给定士兵们牺牲的顺序及编号,请你输出当每个士兵牺牲时,新构成 伙伴 关系的两个士兵的编号。

输入格式

第一行:两个正整数表示 nnmm。 第二行到第 m+1m+1 行:在第 i+1i+1 行,有一个正整数 sis_i,表示第 ii 个牺牲的士兵编号。

输出格式

mm 行:每行两个整数,第 ii 行表示当 sis_i 牺牲时,左右 伙伴 的编号,如果某侧没有 伙伴,输出一个 *

样例

5 3
3
2
1
2 4
1 4
* 4

数据范围

  • 对于 30%30\% 的测试数据满足:1n100001≤n≤10000
  • 对于 60%60\% 的测试数据满足:1n1000001≤n≤100000
  • 对于 100%100\% 的测试数据满足:1n1000000,1m<n1≤n≤1000000,1≤m<n
  • 本题数据范围很大,请尽量优化代码的时间消耗。
  • 在这题中,尽量不要使用 endl 进行换行,否则可能会导致你的代码 TLE