JOI 2016 - Swapping Bibs

Xem PDF



Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 600 (p) Thời gian: 2.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

\(N\) học sinh của trường JOI đứng thành một hàng từ tây sang đông. Học sinh thứ \(i\) tính từ đầu phía tây là học sinh \(i\). Mỗi học sinh đeo một số báo danh ghi một số nguyên; ban đầu số báo danh của học sinh \(i\) ghi \(A_i\).

\(M\) cây gậy, được đánh số từ \(1\) đến \(M\). Lần lượt với \(k=1,2,\ldots,M\), thực hiện quy trình sau; quy trình của gậy \(k\) chỉ bắt đầu sau khi quy trình của gậy \(k-1\) kết thúc.

  1. Giáo viên đưa gậy \(k\) cho học sinh 1.
  2. Khi học sinh \(i\) nhận gậy \(k\):
  3. Nếu \(1\le i\le N-1\), so sánh số dư khi số trên hai số báo danh của học sinh \(i\)\(i+1\) được chia cho \(k\). Nếu số dư của học sinh \(i\) lớn hơn, hai học sinh đổi số báo danh cho nhau. Sau đó học sinh \(i\) đưa gậy cho học sinh \(i+1\).
  4. Nếu \(i=N\), học sinh \(N\) đưa gậy cho giáo viên.
  5. Khi giáo viên nhận lại gậy \(k\), quy trình của gậy đó kết thúc.

Hãy xác định số trên số báo danh của từng học sinh sau khi giáo viên nhận lại gậy \(M\).

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên \(N,M\) (\(1\le N,M\le100\)).
  • \(N\) dòng tiếp theo: dòng thứ \(i\) chứa \(A_i\) (\(1\le A_i\le1000\)).

Dữ liệu ra

In ra \(N\) dòng. Dòng thứ \(i\) là số trên số báo danh của học sinh \(i\) sau toàn bộ quá trình.

Chấm điểm

Có 5 bộ dữ liệu chấm, mỗi bộ trị giá 20 điểm.

Ví dụ

Ví dụ 1

Input
6 4
3
2
8
3
1
5
Output
2
3
1
8
5
3
Giải thích

Sau các gậy \(1,2,3,4\), các dãy lần lượt là 3 2 8 3 1 5, 2 8 3 3 1 5, 2 3 3 1 8 5, và 2 3 1 8 5 3.

Ví dụ 2

Input
10 6
1
2
3
4
5
6
7
8
9
10
Output
6
1
2
3
10
4
8
7
9
5

Nguồn

Kỳ thi sơ loại Olympic Tin học Nhật Bản 2015/2016, bài 2.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: