atcoder#ABC165E. [ABC165E] Rotation Matching

[ABC165E] Rotation Matching

题目描述

あなたは「AtCoderじゃんけん」という一対一のゲームの大会を主催することになりました。 大会の参加者は N N 人で、それぞれには 1 1 から N N の相異なる番号が割り振られています。 アリーナには二人が入ることのできる対戦場が M M 個用意されており、あなたはそれぞれの対戦場に二つの相異なる 1 1 以上 N N 以下の整数を割り当てなければいけません。 複数の対戦場に同じ整数を割り当てることはできません。 大会は N N ラウンドによって構成され、それぞれのラウンドは以下のようにして取り行われます。

  • それぞれの参加者は、自分の番号が割り当てられた対戦場が存在するならそこに行き、そこに来たもう一方の相手と対戦する。
  • その後、それぞれの参加者が、自分の番号に 1 1 を足す。もし 1 1 を足した後の番号が N+1 N+1 であるなら、その値を 1 1 に変更する。

N N 回のラウンドを通じて、二回以上同じ参加者と対戦するような参加者が存在しないようにしたいです。 このような条件を満たす対戦場への整数の割り当てをひとつ出力してください。 ただし、与えられる制約のもとでそのような割り当てが必ず存在することが示せます。

输入格式

入力は以下の形式で標準入力から与えられる。

N N M M

输出格式

以下の形式で M M 行に出力せよ。 i i 行目には i i 個目の対戦場に割り当てる二つの整数を出力せよ。

a1 a_1 b1 b_1 a2 a_2 b2 b_2 : : aM a_M bM b_M

题目大意

你将举行一场1v1竞技比赛Atcoser Janken。 NN 个初始编号为 1N1-N 选手将会参加比赛。你只有 MM 个比赛场,所以你需要分派给每一个场地两个选手编号。当然,你为了做干净的比(ao)赛不能分派一个选手编号给多个比赛场地。比赛共有 NN 轮,每一轮流程如下:

  • 对于每一名选手,如果他的编号已经被分配了比赛场地,他将会去与对手对决。
  • 然后每一名选手的编号 +1+1,如果编号变成了 N+1N+1 ,那么将它变为 11
    即选手的编号会变化,而比赛场对决的选手的编号,每一轮都一样。
    你希望在 NN 轮中没有选手与同一名选手对决多次。将编号分配方案输出。数据保证有解。
4 1
2 3
7 3
1 6
2 5
3 4

提示

制約

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

Sample Explanation 1

参加者 4 4 人を A,B,C,D A,B,C,D とし、はじめ A には 1 1 、Bには 2 2 、Cには 3 3 、Dには 4 4 が割り振られているとします。 - 1 1 回目のラウンドでは 2 2 の割り振られた B と 3 3 の割り振られた C が対戦し、A の番号が 2 2 、B の番号が 3 3 、Cの番号が 4 4 、D の番号が 1 1 となります。 - 2 2 回目のラウンドでは 2 2 の割り振られた A と 3 3 の割り振られた B が対戦し、A の番号が 3 3 、B の番号が 4 4 、C の番号が 1 1 、D の番号が 2 2 となります。 - 3 3 回目のラウンドでは 2 2 の割り振られた D と 3 3 の割り振られた A が対戦し、A の番号が 4 4 、B の番号が 1 1 、C の番号が 2 2 、D の番号が 3 3 となります。 - 4 4 回目のラウンドでは 2 2 の割り振られた C と 3 3 の割り振られた D が対戦し、A の番号が 1 1 、B の番号が 2 2 、C の番号が 3 3 、D の番号が 4 4 となります。 4 4 回のラウンドを通じて二回以上同じ参加者と対戦するような参加者が存在しないため、この出力は正解となります。