通訊錄查詢

0.5s 256M

通訊錄做好了,資訊股長的第二份差事是查詢:老師會一直問「第 \(i\) 位同學的電話是多少?」「第 \(i\) 位同學的資料整包給我。」

請定義一個結構體 student,把一位同學的姓名、座號、電話綁成一包,並且照 14.4 成員函式 的寫法,讓它自己會讀入、自己會印出。成員與成員函式的名稱、型態、簽名都必須完全一樣:

成員 型態/簽名 意義
name string 姓名(小寫英文字母)
seat int 座號
phone string 電話(恰 \(10\) 個數字,可能以 0 開頭)
read() void read() 從 cin 依序讀入自己的姓名、座號、電話
print() void print() 用 cout 印出一行 座號 姓名 電話(以一個空白分隔),結尾要換行

你只需要寫這個結構體的定義(含兩個成員函式),不用寫 main、不用 #include 任何東西——評測程式會自動在你的程式最上方加上這題需要的標頭(<iostream>、<string>)與 using namespace std;,要用其他標頭自己再 #include 即可。想把含有 main 的完整程式貼上來測試也可以,評測時會忽略你的 main。

可以直接複製下面的骨架來改:

struct student {
    // 在這裡宣告三個成員

    void read() {
        // 讀入自己的三筆資料
    }
    void print() {
        // 印出「座號 姓名 電話」並換行
    }
};

評測程式會做的事

評測程式會 #include 你的程式,然後:

  1. 讀入 \(N\),宣告 vector<student> a(N),對每位同學呼叫 a[i].read() 讀入資料。
  2. 讀入 \(Q\),處理 \(Q\) 筆查詢。每筆查詢是兩個整數 \(i\)、\(k\),代表要看第 \(i\) 位同學(依輸入順序,從 \(1\) 起算)的哪一項:
\(k\) 評測程式做的事
\(0\) 呼叫 a[i-1].print(),由你的成員函式印出整包資料
\(1\) 評測程式自己印出 a[i-1].name 並換行
\(2\) 評測程式自己印出 a[i-1].seat 並換行
\(3\) 評測程式自己印出 a[i-1].phone 並換行

若不符合規格,編譯訊息的第一行會告訴你缺了什麼,例如 [檢查] struct student 缺少成員函式 print()。

輸入格式

(這是評測程式讀的輸入。)第一行有一個整數 \(N\)。接下來 \(N\) 行,每行依序是一位同學的姓名、座號、電話,以一個空白分隔。再下一行有一個整數 \(Q\)。接下來 \(Q\) 行,每行有兩個整數 \(i\)、\(k\),代表一筆查詢。

限制

  • \(1 \le N \le 1000\)
  • \(1 \le Q \le 10^4\)
  • 姓名由 \(1\) 到 \(10\) 個小寫英文字母組成
  • \(1 \le\) 座號 \(\le 1000\)
  • 電話恰為 \(10\) 個數字(0 到 9),可能以 0 開頭
  • \(1 \le i \le N\)、\(0 \le k \le 3\)

輸出格式

輸出 \(Q\) 行,依序是每筆查詢的結果:\(k = 0\) 時是 座號 姓名 電話(以一個空白分隔),其餘是該項資料本身。

範例輸入 1

3
amy 3 0912345678
bob 7 0987654321
cathy 1 0900000000
5
2 0
3 3
1 2
3 1
1 0

範例輸出 1

7 bob 0987654321
0900000000
3
cathy
3 amy 0912345678

範例解釋 1

第 \(1\) 筆查詢 2 0:第 \(2\) 位同學是 bob,print() 印出整包 7 bob 0987654321。第 \(2\) 筆 3 3:第 \(3\) 位同學 cathy 的電話 0900000000——以 0 開頭,用 int 存會變成 900000000,所以電話是字串。第 \(3\) 筆 1 2:第 \(1\) 位同學的座號 \(3\)。

題目頁說明

快速鍵

主要功能

  • 範例測試 — 執行題目附帶的範例測資並自動比對預期輸出。
  • 自訂測試 — 自己貼 stdin 執行程式。可勾選「與預期輸出比對 (diff)」做行對行比對。
  • 模板 — 貼上你在個人資料設定的預設程式碼模板。
  • 協作 — 與其他同學共筆編輯這題的程式碼。
  • 自動草稿 — 編輯器內容每 1.5 秒自動存到瀏覽器(per 帳號 / 題目 / 語言)。
  • 提交 — 把程式碼交給 judge 評測,回傳 AC / WA / TLE 等結果。

限制

  • 程式碼最多 65,536 字元
  • 自訂測試 stdin 與預期輸出各最多 1 MB (約 100 萬字元)
  • 自訂測試與範例測試共用一個沙箱,每人約 3 秒 1 次 (範例測試 1 秒 1 次)
  • 自訂測試與範例測試都有 15 秒 牆鐘上限(正式評測仍依題目原本時限)
  • 互動題不提供自訂測試(無法模擬與 judge 互動)。
  • 提交評測本身沒有 rate limit,但同題短時間內多次提交會被視為刷分。