https://atcoder.jp/contests/joi2016yo/tasks/joi2016yo_b
解説
https://atcoder.jp/contests/joi2016yo/submissions/8343032
操作は複雑だがN,Mのサイズは小さい。
全ての操作回数を考えるとNM回くらいなので、シミュレーションしても間に合う。
シミュレーションしよう。
交換はswap関数を使うと自然に書ける。
int N, M, A[101]; //--------------------------------------------------------------------------------------------------- void _main() { cin >> N >> M; rep(i, 0, N) cin >> A[i]; rep(k, 1, M + 1) rep(i, 0, N - 1) if (A[i] % k > A[i + 1] % k) swap(A[i], A[i + 1]); rep(i, 0, N) cout << A[i] << endl; }