Program file | SORT.EXE |
Input file | SORT.IN |
Output file | SORT.OUT |
Execution time | 30 s |
SUB merge (DET() AS STRING, SRC1() AS STRING, SRC2() AS STRING) Ptr = 1: Ptr1 = 1: Ptr2 = 1 DO WHILE Ptr1 <= UBOUND(SRC1) AND Ptr2 <= UBOUND(SRC2) SELECT CASE SRC1(Ptr1) ' 迴圈直到其中一個陣列讀完為止 CASE IS < SRC2(Ptr2) DET(Ptr) = SRC1(Ptr1): Ptr1 = Ptr1 + 1 CASE IS > SRC2(Ptr2) DET(Ptr) = SRC2(Ptr2): Ptr2 = Ptr2 + 1 CASE IS = SRC2(Ptr2) DET(Ptr) = SRC1(Ptr1): Ptr1 = Ptr1 + 1: Ptr2 = Ptr2 + 1 END SELECT Ptr = Ptr + 1 LOOP FOR Ptr1 = Ptr1 TO UBOUND(SRC1) ' 以下二個迴圈至多一個會成功執行 DET(Ptr) = SRC1(Ptr1): Ptr = Ptr + 1 NEXT FOR Ptr2 = Ptr2 TO UBOUND(SRC2) DET(Ptr) = SRC2(Ptr2): Ptr = Ptr + 1 NEXT END SUB
輸入檔和前一題類似,每一組測試資料中,第一行為數字 N ,表示有 N 個陣列, 接下來一行有 N 個數字 S1 到 SN ,表示陣列的大小。接下來是下組測試資料,讀 到 N = 0 表示檔案結束。請算出合併所需最少的時間,印到輸出檔中。合併所需的時間, 以合併後的大小計算。數字都為正整數,N<=10000 , Si<=9 (i=1..N)。
範例﹕
|
|
提示﹕
答案會超過 32767 。
前一題第三個圖在本題中是合於本題規則的。