Chọn Đội tuyển HSGQG TPHCM 2025 - Bản đồ cổ

Xem dạng PDF

Gửi bài giải


Điểm: 0,01 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 1G
Input: bando.inp
Output: bando.out

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Trong một bảo tàng lịch sử nổi tiếng, người quản lí đang được giao nhiệm vụ bảo quản một bản đồ cổ vốn đã trải qua hàng trăm năm. Theo thời gian, để tiện lưu trữ, bản đồ đã được gấp lại nhiều lần tại những nếp gấp khác nhau. Bản đồ có ~N+1~ nếp gấp cách đều nhau được đánh số từ ~0~ đến ~N~ từ mép trái qua mép phải. Mỗi lần gấp tại nếp gấp vị trí ~X~, phần bản đồ ngắn hơn sẽ được gấp chồng lên phần còn lại. Trường hợp hai phần bằng nhau thì gấp phần bản đồ bên trái lên phần bên phải. Sau ~K~ lần gấp như thế, tại cùng một vị trí có thể có nhiều nếp gấp. Giả sử độ dày của bản đồ sau các lần gấp tăng không đáng kể.

Một ngày nọ, khi bảo tàng tổ chức triển lãm tấm bản đồ cổ, ông quản lí đặt tấm bản đồ đã được gấp trên mặt bàn để kiểm tra. Sau khi quan sát, ông muốn biết số nếp gấp chồng lên nhau tại những vị trí nếp gấp tiếp xúc với mặt bàn.

Yêu cầu: Hãy viết chương trình giúp người quản lí trả lời câu hỏi trên.

Input

Vào từ file BANDO.INP:

  • Dòng 1: 2 số nguyên ~N~ và ~K~.

  • Dòng 2: ~K~ số nguyên là các vị trí nếp gấp (~0 \le x_i < N + 1~ với ~i~ = ~1~, ~2~, ~3~, ... , ~K~).

Output

Ghi ra file BANDO.OUT:

  • Dòng 1: Số lượng vị trí nếp gấp tiếp xúc với mặt bàn.

  • Dòng 2: Số lượng nếp gấp tại vị trí đó theo thứ tự từ trái sang phải.

Scoring

Subtask Điểm Giới hạn
~1~ ~30\%~ ~N ≤ 10^3, K ≤ 5~.
~2~ ~70\%~ ~N ≤ 10^6, K ≤ 10^6~.

Sample Input 1

7 2
3 2

Sample Output 1

4
2 3 2 1

Notes

image

Minh hoạ cho test 1.


Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.