AT_abc165_e [ABC165E] Rotation Matching

题目描述

你将要举办一个名为“AtCoder じゃんけん”的一对一游戏比赛。比赛共有 $N$ 名参赛者,每位参赛者被分配了 $1$ 到 $N$ 之间的不同编号。竞技场中有 $M$ 个可以容纳两人的对战场地,你需要为每个对战场地分配两个不同的 $1$ 到 $N$ 之间的整数。不能在多个对战场地分配相同的整数。 比赛由 $N$ 轮组成,每一轮按如下方式进行: - 每位参赛者,如果有分配给自己的编号的对战场地,就前往该场地,并与到场的另一位参赛者对战。 - 之后,每位参赛者的编号加 $1$。如果加 $1$ 后编号变为 $N+1$,则将其编号改为 $1$。 你希望在 $N$ 轮比赛中,不存在任何参赛者与同一位参赛者对战两次或以上。请输出一种满足上述条件的对战场地编号分配方案。在给定的约束下,保证一定存在这样的分配方案。

输入格式

输入通过标准输入给出,格式如下: > $N$ $M$

输出格式

请输出 $M$ 行,每行输出为第 $i$ 个对战场地分配的两个整数。 > $a_1$ $b_1$ > $a_2$ $b_2$ > $\cdots$ > $a_M$ $b_M$

说明/提示

### 约束条件 - $1 \leq M$ - $M \times 2 + 1 \leq N \leq 200000$ ### 样例解释 1 假设有 $4$ 名参赛者,分别为 $A,B,C,D$,最初 $A$ 的编号为 $1$,$B$ 的编号为 $2$,$C$ 的编号为 $3$,$D$ 的编号为 $4$。 - 第 $1$ 轮中,编号为 $2$ 的 $B$ 和编号为 $3$ 的 $C$ 对战。之后,$A$ 的编号变为 $2$,$B$ 的编号变为 $3$,$C$ 的编号变为 $4$,$D$ 的编号变为 $1$。 - 第 $2$ 轮中,编号为 $2$ 的 $A$ 和编号为 $3$ 的 $B$ 对战。之后,$A$ 的编号变为 $3$,$B$ 的编号变为 $4$,$C$ 的编号变为 $1$,$D$ 的编号变为 $2$。 - 第 $3$ 轮中,编号为 $2$ 的 $D$ 和编号为 $3$ 的 $A$ 对战。之后,$A$ 的编号变为 $4$,$B$ 的编号变为 $1$,$C$ 的编号变为 $2$,$D$ 的编号变为 $3$。 - 第 $4$ 轮中,编号为 $2$ 的 $C$ 和编号为 $3$ 的 $D$ 对战。之后,$A$ 的编号变为 $1$,$B$ 的编号变为 $2$,$C$ 的编号变为 $3$,$D$ 的编号变为 $4$。 在 $4$ 轮比赛中,没有任何参赛者与同一位参赛者对战两次,因此该输出是正确的。 由 ChatGPT 4.1 翻译