trang chủ / bài tập / chattraf

Lưu lượng gửi ra của máy chủ chat

Đề bài

Mô tả

Một máy chủ chat xử lý một dãy lệnh, mỗi lệnh nằm trên một dòng riêng. Có ba loại lệnh:

  • Thêm một người vào phòng chat: +<tên>.
  • Xóa một người khỏi phòng chat: -<tên>.
  • Gửi một tin nhắn: <người gửi>:<nội dung>. Khi đó máy chủ gửi tin nhắn tới tất cả những người đang có mặt trong phòng chat tại thời điểm đó (kể cả chính người gửi).

Lệnh thêm và xóa không tạo ra lưu lượng. Với mỗi lệnh gửi, nếu độ dài của nội dung tin nhắn là l ký tự thì máy chủ gửi l byte cho mỗi người đang có mặt trong phòng. Hãy tính tổng lưu lượng gửi ra mà máy chủ tạo ra sau khi xử lý toàn bộ dãy lệnh.

<tên><người gửi> là một xâu khác rỗng gồm các chữ cái Latin và chữ số. <nội dung> có thể chứa chữ cái, chữ số và dấu cách, nhưng không bắt đầu hoặc kết thúc bằng dấu cách; <nội dung> cũng có thể là xâu rỗng. Nội dung tin nhắn tính từ ngay sau dấu hai chấm đầu tiên trên dòng.

Dữ liệu đảm bảo hợp lệ: không có lệnh thêm một người đã ở trong phòng, không có lệnh xóa một người không có trong phòng. Tên phân biệt chữ hoa và chữ thường.

Dữ liệu vào

Gồm không quá 100 dòng, mỗi dòng là một lệnh theo đúng định dạng trên. Mỗi dòng dài không quá 100 ký tự.

Dữ liệu ra

In ra một số nguyên duy nhất: tổng lưu lượng gửi ra của máy chủ.

Ràng buộc

  • Số lệnh không vượt quá 100.
  • Mỗi dòng dài không quá 100 ký tự.

Ví dụ

Input Output Giải thích
+Mike
Mike:hello
+Kate
+Dmitry
-Dmitry
Kate:hi
-Kate
9 Khi Mike gửi "hello" (5 ký tự) chỉ có Mike trong phòng: 5×1=5. Khi Kate gửi "hi" (2 ký tự) có Mike và Kate trong phòng: 2×2=4. Tổng cộng 9.
+Mike
-Mike
+Mike
Mike:Hi I am here
-Mike
+Kate
-Kate
14 Khi Mike gửi tin nhắn "Hi I am here" (14 ký tự, gồm cả các dấu cách bên trong) chỉ có Mike trong phòng: 14×1=14.

Bình luận

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

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0