edit.exe
là một chương trình máy tính trên hệ điều hành MS-DOS nhằm tạo mới hoặc thay đổi các tệp văn bản *.TXT
. Vì thực hiện trên giao diện cửa sổ console, không có đồ hoạ phức tạp như các chương trình ngày nay (Notepad, MS Word,…) nên việc tạo kiểu cho văn bản là rất hạn chế trên phần mềm này. Trong bài toán này, nhiệm vụ của bạn là thực hiện thao tác "căn lề trái" (left-align) cho một văn bản trong cửa sổ console có độ dài ~W~ tuỳ ý.
Cho một đoạn văn bản ~T~ gồm ~n~ ký tự ASCII (bao gồm 26 chữ cái Latin thường, 26 chữ cái Latin hoa, 10 chữ số thập phân, dấu phẩy, dấu chấm và dấu khoảng trắng). Hãy in ra đoạn văn bản đã tạo kiểu "căn lề trái", tức là thay thế một số ký tự khoảng trắng bằng ký tự xuống dòng '\n'
, sao cho đảm bảo:
- Trên mỗi dòng, ký tự đầu tiên và ký tự cuối cùng không phải là ký tự khoảng trắng;
- Mỗi dòng có tối đa ~W~ ký tự (không kể ký tự xuống dòng);
- Số lượng dòng sử dụng là ít nhất;
- Nếu có nhiều hơn một phương án, chọn phương án có chênh lệch độ dài giữa dòng dài nhất và dòng ngắn nhất là ít nhất;
- Nếu có nhiều hơn một phương án, có thể in ra một phương án bất kỳ.
Chú thích.
- Một từ là tập hợp các ký tự Latin được bao quanh bởi ký tự khoảng trắng
' '
. - Một đoạn văn bản được gọi là chuẩn khi và chỉ khi:
- Không tồn tại hai ký tự khoảng trắng
' '
liên tiếp nhau; - Liền sau một dấu phẩy
,
bất kỳ là một ký tự khoảng trắng' '
hoặc xuống hàng'\n'
; - Liền sau một dấu chấm
.
bất kỳ là một ký tự khoảng trắng' '
hoặc xuống hàng'\n'
(trừ dấu chấm kết đoạn); - Mở đầu một hàng không phải là một dấu câu;
- Kết thúc một hàng không phải là ký tự khoảng trắng
' '
.
- Không tồn tại hai ký tự khoảng trắng
Input
- Dòng ~1~: chứa số nguyên dương ~W~, biểu thị độ dài cửa sổ ~W~;
- Dòng ~2~: chứa toàn bộ văn bản ~T~ trên một dòng. Dữ liệu đảm bảo ~T~ là một văn bản chuẩn.
Output
- Dòng ~1~: In ra số nguyên dương ~M~ là số dòng của văn bản sau khi canh lề;
- Dòng ~2~ đến ~M+1~: In ra văn bản ~P~ sau khi canh lề. Kết quả phải đảm bảo ~P~ là một văn bản chuẩn.
Ví dụ
Sample Input
98
Artificial intelligence, a nebulous construct of algorithms and data, has precipitated a paradigm shift in contemporary society. Its capacity for rapid learning and adaptation has engendered both awe and trepidation. As these sentient systems proliferate, so too do the ethical quandaries associated with their development and deployment. While the potential benefits, from accelerated medical research to optimized energy consumption, are undeniably profound, the specter of unintended consequences looms large.
Sample Output
6
Artificial intelligence, a nebulous construct of algorithms and data, has precipitated
a paradigm shift in contemporary society. Its capacity for rapid learning and adaptation
has engendered both awe and trepidation. As these sentient systems proliferate,
so too do the ethical quandaries associated with their development and deployment.
While the potential benefits, from accelerated medical research to optimized
energy consumption, are undeniably profound, the specter of unintended consequences looms large.
=======================================[Ruler, DO NOT PRINT]=======================================
1 2 3 4 5 6 7 8 9 9
12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
===================================================================================================
Chú thích:
- Đoạn văn sau khi canh lề có ~6~ dòng.
Cách tính điểm
Có tất cả ~16~ testcase, mỗi testcase được sinh bởi chatbot Gemini (Google) sử dụng truy vấn sau:
Generate some random English text in one long paragraph containing around [1000 - 10000] characters, AI-themed, using [simple/complex] words
Với mỗi testcase, giả sử:
- Phương án canh lề của bạn sử dụng ~M~ dòng, phương án canh lề của giám khảo sử dụng ~M_0~ dòng;
- Chênh lệch giữa dòng dài nhất và dòng ngắn nhất trong phương án của bạn là ~\sigma~, trong phương án của giám kháo là ~\sigma_0~;
Khi đó,
- Bạn được ~35\%~ điểm nếu ~M = M_0~ và ~\sigma_0 + 2 < \sigma \le \sigma_0 + 8~;
- Bạn được ~75\%~ điểm nếu ~M = M_0~ và ~\sigma_0 < \sigma \le \sigma_0 + 2~;
- Bạn được ~100\%~ điểm nếu ~M < M_0~ hoặc (~M = M_0~ và ~\sigma \le \sigma_0~).
Giới hạn
- ~100 \le |T| \le 10^4~
- ~50 \le W \le 200~
- Độ dài mỗi từ không vượt quá ~20~.
Bình luận