Bessie 想用自己的演算法給整數陣列排序。她有一堆 $N$ 個整數 $a_1,a_2,\dots,a_N$,滿足 $(1 \leq N \leq 2\cdot 10^5)$ 和 $(1 \leq a_i \leq 10^{11})$,要將它們按有序順序放入另一個陣列。她反覆找出這堆整數中的最小值,將其取走並加入陣列末尾。從一堆 $p$ 個整數中找出最小值需要 $p$ 秒。
Farmer John 讓農場裡其他一些奶牛幫助 Bessie,但她們很懶,於是 Bessie 利用了這一點。她將整數分成 Bessie 堆和助手堆。對於 Bessie 堆中的每個整數,她照常執行自己的演算法。助手堆中的每個整數則交給不同的助手奶牛。Farmer John 的農場很大,因此她可以找任意多名助手。如果助手收到整數 $a_i$,Bessie 就讓她睡 $a_i$ 秒,醒來後立刻將這個整數加入陣列末尾。如果 Bessie 與助手同時加入整數,因為她是領頭的,她的整數會先加入。如果多名助手被分配到同一個整數,她們會同時將該整數的多個副本加入陣列。
幫助 Bessie 分配整數,使最終陣列有序,並使排序所需時間最短。
輸入格式
第一行包含獨立測試用例數 $T$($1\le T\le 10$)。
每個測試用例的格式如下:
每個測試用例的第一行包含 Bessie 陣列中的整數個數 $N$。
下一行包含要排序的整數 $a_1, a_2, \dots, a_N$。同一整數可以出現多次。
保證所有測試用例的 $N$ 之和不超過 $2\cdot 10^5$。
輸出格式
對於每個測試用例,輸出最優分配下排序陣列所需的最短時間,每個答案占一行。
範例
輸入格式 1
4 5 1 2 4 5 100000000000 5 17 53 4 33 44 4 3 5 5 5 6 2 5 100 1 4 5
輸出格式 1
6 15 5 6
說明
第一個例子中,Bessie 可以將 $1,2$ 分配給助手,自己留下 $4,5,10^{11}$。
| 時間 | 事件 |
|---|---|
| 1 | 助手加入 1 |
| 2 | 助手加入 2 |
| 3 | Bessie 加入 4 |
| 5 | Bessie 加入 5 |
| 6 | Bessie 加入 $10^{11}$ |
第二個例子中,最優方案是全部由 Bessie 自己排序。一種不可行的分配是讓助手處理 $4$,其餘留給自己,因為這樣她會在助手加入 $4$ 前將 $17$ 加入陣列。
第三個例子中,她可以將所有整數分配給助手。
第四個例子中,她可以將 $1,4,5$ 分配給助手,自己留下 $2,5,100$。
| 時間 | 事件 |
|---|---|
| 1 | 助手加入 1 |
| 3 | Bessie 加入 2 |
| 4 | 助手加入 4 |
| 5 | Bessie 加入 5 |
| 5 | 助手加入 5 |
| 6 | Bessie 加入 100 |
子任務
- 輸入 2:$N\le 16$
- 輸入 3–5:$N\le 150$
- 輸入 6–8:$\sum N\le 5000$
- 輸入 9–11:沒有額外限制。
題目來源:Suhas Nagar