Từ điển (THTB TQ 2014)

Xem PDF

Điểm: 198 (p) Thời gian: 6.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Biết được việc các thí sinh thi Tin học trẻ giải được bài XEPHINH, người ngoài hành tinh rất yêu quý đất nước Việt Nam. Họ quyết định trở lại để đến thăm chúng ta. Tuy nhiên vì ngôn ngữ bất đồng nên các em không hiểu những người ngoài hành tinh muốn nói gì. Vì vậy các em phải mang theo từ điển của mình ra để cho họ xem. Sau đó các em sẽ đoán xem là họ muốn nói đến từ nào trong từ điển. Từ điển cũng chỉ gồm \(26\) chữ cái thường từ \(a\) đến \(z\). Tuy nhiên vì không thể giải thích được với nhau nên hiện tại bước đầu giao tiếp vẫn là đoán từ và các câu hỏi để đoán từ phải vô cùng đơn giản. Người ngoài hành tinh chỉ có thể hiểu các câu hỏi sau:

  1. Có bao nhiêu kí tự \(C\) trong từ đó?
  2. Kí tự tại vị trí \(X\) là kí tự gì?

Nhiệm vụ của các bạn là viết một chương trình, sử dụng các câu lệnh được cung cấp để thực hiện khảo sát từ điển trong một bộ dữ liệu vào và đưa ra từ mà người ngoài hành tinh muốn nói là từ gì.

Input

  • Dòng đầu tiên là số nguyên dương \(N\) (\(1 \le N \le 10^6\)) là số từ trong từ điển.
  • \(N\) dòng tiếp theo mô tả từ điển chỉ gồm danh sách các từ đôi một khác nhau, trong đó mỗi từ nằm trên một dòng và chỉ gồm các chữ cái in thường từ \(a\) đến \(z\) dài tối đa \(50\) kí tự.

Interaction

Để tương tác với máy chấm, hãy in mỗi lệnh trên từng dòng. Câu trả lời sẽ được máy chấm in ra trên một dòng khác, và em đọc vào. Lưu ý flush luồng ra chuẩn sau mỗi dòng được in ra bằng lệnh fflush(stdout) hoặc cout << endl;

Các lệnh được sử dụng:

  • count c (\(c\) là một kí tự bất kì từ a đến z): máy sẽ in ra số lượng kí tự c trong từ cần tìm. Chi phí sử dụng hàm count c 1 lần là 1 đơn vị.
  • getpos x (\(x\) là một số nguyên dương): máy sẽ in ra kí tự tại vị trí x trong từ cần tìm (từ trái sang phải, xâu được đánh số từ 1). Nếu \(x\) lớn hơn độ dài của từ, máy sẽ in ra kí tự #. Chi phí sử dụng hàm getpos x 1 lần là 10 đơn vị.
  • answer s (\(s\) là một xâu kí tự): là từ mà em đã xác định được. Chi phí sử dụng thủ tục answer() là 0 đơn vị. Chương trình bắt buộc phải gọi thủ tục answer() một lần duy nhất, nếu không sẽ bị 0 điểm. Thủ tục này khi được gọi sẽ tự động thoát chương trình bằng câu lệnh exit.

Scoring

  • Với mỗi test, nếu chương trình của bạn gọi thủ tục answer() với đáp án không chính xác, chạy quá thời gian quy định, sử dụng quá 1000 đơn vị hoặc gặp các lỗi dẫn tới dừng chương trình, bài làm sẽ nhận 0 điểm cho test đó. Số điểm cho mỗi test sẽ giảm dần khi chi phí bạn sử dụng tăng lên.

Example

Test 1

Input
7
cat
can
mic
man
tiger
hello
world
Output

Giả sử từ người ngoài hành tinh muốn nói là cat. Các hoạt động
nhập xuất có thể diễn ra như sau:

    ```sample
    >> getpos 4
    << #
    >> count c
    << 1
    >> count a
    << 1
    >> count n
    << 0
    >> answer cat
    ```

??? warning "Note"

    - Độ dài của từ `cat` là $3$ nên khi hỏi độ dài bằng $4$ vượt quá độ dài $3$, máy in ra dấu `#`
    - Trong từ `cat` có 1 kí tự `c` nên máy in ra $1$
    - Trong từ `cat` có 1 kí tự `a` nên máy in ra $1$
    - Trong từ `cat` không có kí tự `n` nên máy in ra $0$
    - Như vậy bạn đã trả lời đúng với chi phí sử dụng là $13$. Chương trình khi in ra `answer cat` sẽ đưa đáp án đồng thời thoát chương trình chạy của bạn.

Bình luận

Không có bình luận nào.