請用 A 到 Z 的順序排序 N 個(N ≤ 10,000,000)大寫英文字母,並輸出排序後在指定位置的英文字母。
輸入資料有三行,第一行有兩個用空格分開的數字,代表有幾個字母要被排序(N)和幾個要輸出的字母(M)。第二行為 N 個要被排序的大寫英文字母。第三行為 M 個以空格分開的數字,每一個數字都小於等於 N,代表要輸出的英文字母的位置(位置 1 為排序後的第一個英文字母)。請注意第三行中的數字有可能重複。
輸出資料只有一行,含有共 M(1 ≤ M ≤ 10)個大寫英文字母。
20 4 KFGHTHZHJKGXAKMCNHTE 5 1 15 3
GAME
15 9 XOMWSMNQLOAENTO 3 9 12 1 3 1 5 9 12
LOSALAMOS
我們可以使用一維陣列(假設叫 table)來記錄每個字母的出現次數。
table[0] 是字母 A 的出現次數,table[1] 是字母 B 的出現次數 ...,以此類
推。
在輸出排序後指定位置的字母時,我們需要透過累加 table 中的值來確定
「在這個位置之前,已經出現了多少個字母」,從而推算出該位置屬於哪
個字母。
假設 A 出現了 3 次,B 出現了 2 次,C 出現了 4 次,而我們要輸出第 6 個
位置,那麼 C 就是我們要的答案 (3+2+4 ≥ 6)。
編號 | 身分 | 題目 | 主題 | 人氣 | 發表日期 |
沒有發現任何「解題報告」 |