[Buổi 21][Xử lý chuỗi][HW] Bài 5: Gộp cấu hình key=value


LÀM BÀI

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

Author:
Problem types
Allowed languages
C++

Gộp cấu hình key=value

Bối cảnh

Một dòng cấu hình gồm các token dạng key=value tách bởi whitespace. Key hợp lệ nếu bắt đầu bằng chữ cái và các ký tự còn lại chỉ là chữ cái, chữ số hoặc _. Value phải là số nguyên không âm chỉ gồm chữ số. Token sai format được đếm là invalid và bỏ qua. Nếu cùng key xuất hiện nhiều lần, value của key được cộng dồn.

Sau khi xử lý, in số key hợp lệ phân biệt và số token invalid, rồi liệt kê key totalValue theo thứ tự key tăng dần. Bài Medium buộc học viên tách token quanh dấu = đúng một lần, validate hai field và quản lý duplicate bằng map. Token a=1=2 phải invalid vì có nhiều delimiter.

Duplicate key được định nghĩa là phép cộng chứ không phải "last wins", vì vậy parser và aggregator phải tách trách nhiệm. Một token hợp lệ mới được phép chạm vào map; nếu viết a[key] trước khi biết value hợp lệ, token lỗi có thể để lại một key giá trị 0 trong kết quả và làm distinct count sai.

Yêu cầu

  1. Tokenize theo whitespace.
  2. Mỗi token phải có đúng một =.
  3. Validate key và value.
  4. Cộng dồn value theo key bằng map.
  5. In distinct invalid, rồi các key/value tăng dần.

Input

Một dòng cấu hình.

Output

Dòng đầu distinct invalid; các dòng sau key totalValue.

Ràng buộc

|line|≤5000, tổng từng key nằm trong long long.

Ví dụ 1

Input

a=1 b=2 a=3 bad x=-1 c=5

Output

3 2
a 4
b 2
c 5

Giải thích

Token hợp lệ: a=1, b=2, a=3, c=5. bad thiếu =, x=-1 có value âm nên invalid. Map cộng dồn a thành 4; b=2, c=5. Có 3 key distinct và 2 invalid, nên output đầu 3 2, sau đó a 4, b 2, c 5 theo key tăng.

Ví dụ 2

Input

key=10 _x=2 a1=3

Output

2 1
a1 3
key 10

Giải thích

key=10 hợp lệ. _x=2 invalid vì key phải bắt đầu bằng chữ cái. a1=3 hợp lệ vì chữ số được phép sau ký tự đầu. Do đó distinct=2, invalid=1 và hai dòng là a1 3, key 10 theo thứ tự map.

Thông tin học tập

  • Module: M06
  • Buổi: B21
  • Loại bài: HOMEWORK
  • Độ khó: Medium
  • Concepts: stringstream, key=value parser, map aggregation, validation, duplicate keys
  • Giới hạn kiến thức: B01-B21
  • Time limit: 1 second(s)
  • Memory limit: 256 MB
  • Point: 100

Comments

There are no comments at the moment.

Zalo