ゼッケンの交換 (Swapping Bibs)
日本語
Language
Contribute a translation- Time limit
- 10000 ms
- Memory limit
- 256 MB
- Submissions
- 0
- Correct
- 0
- Solved by
- 0
- AC rate
- —
Statement
JOI 高校の \(N\) 人の生徒が東西に一列に並んでいる.列の西の端から \(i\) 番目の生徒が生徒 \(i\) である.それぞれの生徒は整数が \(1\) つ書かれたゼッケンを付けている.最初,生徒 \(i\) のゼッケンには整数 \(A_i\) が書かれている.
バトンが \(M\) 個あり,バトンには \(1\) から \(M\) までの番号が付けられている.\(k = 1, 2, \ldots, M\) に対し,以下の操作を行う.バトン \(k\) (\(2 \leqq k \leqq M\)) に関する操作は,バトン \(k - 1\) に関する操作が終わってから行う.
- 先生がバトン \(k\) を生徒 \(1\) に渡す.
- バトンを受け取った生徒は,以下のルールに従ってバトンを渡す.
- ルール:生徒 \(i\) がバトン \(k\) を受け取ったとする.
- \(1 \leqq i \leqq N - 1\) のとき: 生徒 \(i\) のゼッケンの整数を \(k\) で割った余りが,生徒 \(i + 1\) のゼッケンの整数を \(k\) で割った余りよりも大きいとき,生徒 \(i\) と生徒 \(i + 1\) がゼッケンを交換し,生徒 \(i\) は生徒 \(i + 1\) にバトンを渡す.そうでないときは,ゼッケンを交換せずに,生徒 \(i\) は生徒 \(i + 1\) にバトンを渡す.
- \(i = N\) のとき: 生徒 \(N\) はバトンを先生に渡す.
- ルール:生徒 \(i\) がバトン \(k\) を受け取ったとする.
- 先生が生徒 \(N\) からバトン \(k\) を受け取ったら,バトン \(k\) に関する操作は終わりである.
生徒のゼッケンに最初に書かれていた整数とバトンの個数 \(M\) が与えられたとき,先生が生徒 \(N\) からバトン \(M\) を受け取った後の,それぞれの生徒のゼッケンの整数を求めるプログラムを作成せよ.
Input
入力は \(1 + N\) 行からなる.
\(1\) 行目には整数 \(N, M\) (\(1 \leqq N \leqq 100\),\(1 \leqq M \leqq 100\)) が空白を区切りとして書かれており,それぞれ生徒の人数とバトンの個数を表す.
続く \(N\) 行のうちの \(i\) 行目 (\(1 \leqq i \leqq N\)) には整数 \(A_i\) (\(1 \leqq A_i \leqq 1000\)) が書かれており,生徒 \(i\) のゼッケンに最初に書かれている整数 \(A_i\) を表す.
Output
出力は \(N\) 行からなる.\(i\) 行目 (\(1 \leqq i \leqq N\)) には,先生が生徒 \(N\) からバトン \(M\) を受け取った後の,生徒 \(i\) のゼッケンの整数を出力せよ.
Examples
6 4 3 2 8 3 1 5
2 3 1 8 5 3
入出力例 \(1\) では \(6\) 人の生徒がいる.最初,生徒のゼッケンは順に \(3, 2, 8, 3, 1, 5\) である.バトンは \(4\) 個ある.
- バトン \(1\) に関する操作が終了した時点での生徒のゼッケンは順に \(3, 2, 8, 3, 1, 5\) である.
- バトン \(2\) に関する操作が終了した時点での生徒のゼッケンは順に \(2, 8, 3, 3, 1, 5\) である.
- バトン \(3\) に関する操作が終了した時点での生徒のゼッケンは順に \(2, 3, 3, 1, 8, 5\) である.
- バトン \(4\) に関する操作が終了した時点での生徒のゼッケンは順に \(2, 3, 1, 8, 5, 3\) である.
10 6 1 2 3 4 5 6 7 8 9 10
6 1 2 3 10 4 8 7 9 5
Notes
JOI 2016 · JCIOI · CC BY-SA 4.0
Tags
No tags yet