[Buổi 22][Củng cố bộ nhớ & chuỗi][HW] Bài 3: Phân tích batch dòng động


LÀM BÀI

Points: 100
Time limit: 1.0s
Memory limit: 256M

Author:
Problem types
Allowed languages
C++

Phân tích batch dòng động

Bối cảnh

Một công cụ ingest nhận n dòng văn bản vào dynamic string array. Mỗi dòng được chuẩn hóa khoảng trắng trước khi phân tích. Hệ thống cần biết tổng số token của toàn batch, số dòng không rỗng, và dòng có nhiều token nhất. Nếu nhiều dòng có cùng token count, chọn index nhỏ hơn. Nếu tất cả rỗng, best index=-1 và bestTokens=0.

Bài Medium ghép B20/B21 với lifetime B22: input phải dùng getline đúng, normalization tạo state canonical, tokenization chạy trên state đó, và raw array phải còn sống cho đến khi mọi thống kê hoàn tất. Đây không phải bài thuật toán khó, nhưng có nhiều điểm dễ lệch state: đếm token trên raw line trong khi in canonical, hoặc chọn longest theo số ký tự thay vì số token.

Dòng có nhiều ký tự chưa chắc có nhiều token hơn, nên tiêu chí BEST phải được tính sau tokenization chứ không dựa trên length(). Ví dụ "longword" có 1 token còn "a b c" có 3 token dù ngắn hơn. Đây là bài kiểm tra rõ ràng việc mỗi metric cần đúng representation/state.

Yêu cầu

  1. Đọc n dòng vào string*.
  2. Normalize whitespace từng dòng.
  3. Đếm token bằng stringstream.
  4. Tính totalTokens, nonEmptyLines, best index/token count.
  5. In canonical lines rồi summary; cleanup.

Input

Dòng 1 n; n dòng.

Output

N canonical lines (kể cả dòng rỗng), sau đó summary.

Ràng buộc

0≤n≤2000, mỗi line ≤1000.

Ví dụ 1

Input

3
 a   b c 
hello
   x y

Output

a b c
hello
x y
TOTAL 6 NONEMPTY 3 BEST 0 3

Giải thích

Ba canonical lines là a b c, hello, x y. Token count lần lượt 3,1,2 nên total=6 và có 3 dòng không rỗng. Dòng 0 có nhiều token nhất với 3, vì vậy summary là TOTAL 6 NONEMPTY 3 BEST 0 3 sau ba dòng canonical.

Ví dụ 2

Input

0

Output

TOTAL 0 NONEMPTY 0 BEST -1 0

Giải thích

n=0 nên không có dòng nào để normalize hay tokenize. total=0, nonempty=0, best=-1, bestTok=0 giữ nguyên từ khởi tạo. Vòng in canonical lines cũng không chạy. Vì vậy output chỉ có summary TOTAL 0 NONEMPTY 0 BEST -1 0.

Thông tin học tập

  • Module: M06
  • Buổi: B22
  • Loại bài: HOMEWORK
  • Độ khó: Medium
  • Concepts: dynamic string array, normalization, stringstream, token statistics, longest line
  • Giới hạn kiến thức: B01-B22
  • Time limit: 1 second(s)
  • Memory limit: 256 MB
  • Point: 100

Comments

There are no comments at the moment.

Zalo