#aBC165E. [ABC165E] Rotation Matching

[ABC165E] Rotation Matching

AT_abc165_e [ABC165E] Rotation Matching

题目描述

你将要举办一个名为“AtCoder じゃんけん”的一对一游戏比赛。比赛共有 NN 名参赛者,每位参赛者被分配了 11NN 之间的不同编号。竞技场中有 MM 个可以容纳两人的对战场地,你需要为每个对战场地分配两个不同的 11NN 之间的整数。不能在多个对战场地分配相同的整数。

比赛由 NN 轮组成,每一轮按如下方式进行:

  • 每位参赛者,如果有分配给自己的编号的对战场地,就前往该场地,并与到场的另一位参赛者对战。
  • 之后,每位参赛者的编号加 11。如果加 11 后编号变为 N+1N+1,则将其编号改为 11

你希望在 NN 轮比赛中,不存在任何参赛者与同一位参赛者对战两次或以上。请输出一种满足上述条件的对战场地编号分配方案。在给定的约束下,保证一定存在这样的分配方案。

输入格式

输入通过标准输入给出,格式如下:

NN MM

输出格式

请输出 MM 行,每行输出为第 ii 个对战场地分配的两个整数。

a1a_1 b1b_1
a2a_2 b2b_2
\cdots
aMa_M bMb_M

输入输出样例 #1

输入 #1

4 1

输出 #1

2 3

输入输出样例 #2

输入 #2

7 3

输出 #2

1 6
2 5
3 4

说明/提示

约束条件

  • 1M1 \leq M
  • M×2+1N200000M \times 2 + 1 \leq N \leq 200000

样例解释 1

假设有 44 名参赛者,分别为 A,B,C,DA,B,C,D,最初 AA 的编号为 11BB 的编号为 22CC 的编号为 33DD 的编号为 44

  • 11 轮中,编号为 22BB 和编号为 33CC 对战。之后,AA 的编号变为 22BB 的编号变为 33CC 的编号变为 44DD 的编号变为 11
  • 22 轮中,编号为 22AA 和编号为 33BB 对战。之后,AA 的编号变为 33BB 的编号变为 44CC 的编号变为 11DD 的编号变为 22
  • 33 轮中,编号为 22DD 和编号为 33AA 对战。之后,AA 的编号变为 44BB 的编号变为 11CC 的编号变为 22DD 的编号变为 33
  • 44 轮中,编号为 22CC 和编号为 33DD 对战。之后,AA 的编号变为 11BB 的编号变为 22CC 的编号变为 33DD 的编号变为 44

44 轮比赛中,没有任何参赛者与同一位参赛者对战两次,因此该输出是正确的。

由 ChatGPT 4.1 翻译