C6-11 · Sơ đồ phòng chiếu

Xem dạng PDF

Gửi bài giải

Điểm: 1,00
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Tác giả:
Nguồn bài:
Sách "Lập trình cơ sở với Python"
Dạng bài
Ngôn ngữ cho phép
Python

Đề

Một phòng chiếu phim có ~r~ hàng ghế, mỗi hàng ~c~ ghế. Đã bán ~v~ vé, mỗi vé ứng với một ghế (hàng, ghế) và không có hai vé trùng ghế. Hãy tạo bảng ~r \times c~ đúng cách (mỗi dòng là một danh sách riêng), đánh dấu các ghế đã bán, rồi:

  1. in sơ đồ phòng: X là ghế đã bán, . là ghế trống;
  2. in số thứ tự của hàng còn nhiều ghế trống nhất; nếu nhiều hàng bằng nhau thì chọn hàng đứng trước.

Dữ liệu vào

  • Dòng 1: ba số nguyên ~r~, ~c~, ~v~.
  • ~v~ dòng tiếp theo, mỗi dòng hai số nguyên hang ghe (hàng và ghế đánh số từ 1).

Kết quả

  • ~r~ dòng đầu: sơ đồ, mỗi dòng ~c~ ký hiệu X hoặc . cách nhau một dấu cách; dòng thứ ~i~ là hàng ~i~.
  • Dòng cuối: số thứ tự hàng còn nhiều ghế trống nhất.

Ràng buộc

  • ~1 \le r, c \le 20~; ~0 \le v \le r \cdot c~.
  • ~1 \le~ hang ~\le r~, ~1 \le~ ghe ~\le c~; các vé không trùng nhau.

Ví dụ

Dữ liệu vào:

3 5 3
1 2
1 3
3 5

Kết quả:

. X X . .
. . . . .
. . . . X
2

Giải thích ví dụ

Hàng 1 bán ghế 2, 3; hàng 3 bán ghế 5. Số ghế trống: hàng 1 còn 3, hàng 2 còn 5, hàng 3 còn 4. Hàng 2 trống nhiều nhất.

Ghế (hàng 1, ghế 2) nằm ở so_do[0][1] — trừ 1 cho cả hàng lẫn ghế.

Lưu ý

  • [["."] * c] * r tạo ~r~ tên cùng trỏ vào một danh sách: bán một ghế thì cả cột thành X (mục 6.6–6.7, bảng 6.10). Tạo từng dòng trong vòng lặp: so_do.append(["."] * c).
  • Có thể ~v = 0~ (chưa bán vé nào) hoặc bán hết; khi mọi hàng bằng nhau thì in 1.
  • Bộ test có phòng 1 × 1, 20 × 20, phòng có số hàng khác số ghế (đổi lẫn ~r~ và ~c~ là sai).

Nguồn trong sách: Bài C6-11, mục 6.12, giáo trình Lập trình cơ sở với Python — TS. Nguyễn Quốc Long · Mức: (***)


Đang tải...