班上有 $N$ 名學生。每位學生根據目前的班級排名被分配了一個從 $0$ 到 $N - 1$ 的編號。也就是說,學生 $i$(對於所有 $0 \le i \le N - 1$)目前的班級排名為 $i$。其中排名 $0$ 為最好,排名 $N-1$ 為最差。
最近舉行了英語和數學考試。學生 $i$(對於所有 $0 \le i \le N - 1$)在英語考試中的排名為 $A[i]$,在數學考試中的排名為 $B[i]$。$A$ 和 $B$ 皆為長度為 $N$ 的排列。
什麼是長度為 $N$ 的排列? 在本題中,長度為 $N$ 的排列 $P$ 是一個長度為 $N$ 的陣列,滿足對於所有 $0 \leq i \leq N - 1$ 皆有 $0 \leq P[i] \leq N-1$,且對於所有 $0 \leq i < j \leq N - 1$ 皆有 $P[i] \neq P[j]$。例如,$[2,1,0]$ 是長度為 $3$ 的排列,但 $[1,2,3]$ 和 $[2,0,2]$ 不是長度為 $3$ 的排列。
老師想要重新排列學生的名次。新的排名可以用一個排列 $P$ 來表示。
對於每位學生 $i$,新的班級排名必須滿足以下條件中的至少一個:
- 對於所有滿足 $P[j] < P[i]$ 的 $j$,學生 $j$ 在英語考試中的表現優於學生 $i$ ($A[j] < A[i]$),或者
- 對於所有滿足 $P[j] < P[i]$ 的 $j$,學生 $j$ 在數學考試中的表現優於學生 $i$ ($B[j] < B[i]$)。
警告:該條件僅適用於滿足 $P[j] < P[i]$ 的 $j$。對於那些 $P[j] \geq P[i]$ 的 $j$ 沒有限制。對於每位學生 $i$,在評估條件是否滿足時,他們必須先選擇一個科目,並針對該科目與所有學生 $j$ 進行比較。對於同一位學生 $i$,在與不同 $j$ 比較時,所選擇的科目必須相同。在評估學生 $i$ 的條件時,不能中途切換科目。
新班級排名的「不滿意度」定義為所有學生中排名下降幅度最大者。換句話說,不滿意度為 $P[i] - i$ 的最大值(對於所有 $0 \leq i \leq N - 1$)。
警告:不滿意度是 $P[i] - i$ 的最大值,$i - P[i]$ 的值不會影響不滿意度。
請找出新班級排名可能達到的最小不滿意度。
實作細節
你應該實作以下函式:
int minimum_dissatisfaction(int N, std::vector<int> A, std::vector<int> B)
- $N$:學生人數。
- $A$:一個長度為 $N$ 的陣列,描述英語考試的排名。
- $B$:一個長度為 $N$ 的陣列,描述數學考試的排名。
- 此函式應回傳新班級排名的最小不滿意度。
- 此函式將被呼叫恰好一次。
資料範圍
- $1 \leq N \leq 5\;000\;000$。
- $0 \leq A[i], B[i] \leq N - 1$,對於所有 $0 \leq i \leq N - 1$。
- $A[i] \neq A[j]$,對於所有 $0 \leq i < j \leq N - 1$。
- $B[i] \neq B[j]$,對於所有 $0 \leq i < j \leq N - 1$。
子任務
- (3 分) $N \leq 8$。
- (4 分) $N \leq 20$。
- (13 分) $N \leq 500$。
- (12 分) $N \leq 3000$,$A[i] + B[i] = N - 1$,對於所有 $0 \leq i \leq N - 1$。
- (19 分) $N \leq 3000$。
- (15 分) $N \leq 100\;000$,$A[i] + B[i] = N - 1$,對於所有 $0 \leq i \leq N - 1$。
- (17 分) $N \leq 100\;000$。
- (17 分) 無額外限制。
說明:對於子任務 8,僅評測程式本身就保證會消耗 3000ms 時間限制中的 1500ms。
範例
考慮以下呼叫:
minimum_dissatisfaction(5, [3, 0, 4, 1, 2], [0, 3, 2, 4, 1])
在此範例中,其中一種分配新排名的方式為 $P = [0, 2, 3, 4, 1]$。
考慮學生 $1$,其 $P[1] = 2$。所有滿足 $P[j] < P[1]$ 的學生 $j$,其數學排名都優於學生 $1$,因此該學生滿足班級排名條件。
接著,考慮學生 $2$,其 $P[2] = 3$。所有滿足 $P[j] < P[2]$ 的學生 $j$,其英語排名都優於學生 $2$,因此該學生也滿足班級排名條件。
可以驗證所有其他學生也都滿足班級排名條件。
新排名的不滿意度為 $1$。沒有其他不滿意度更低的新排名,因此該函式應回傳 $1$。
範例評測程式
輸入格式:
N
A[0] A[1] ... A[N - 1]
B[0] B[1] ... B[N - 1]
輸出格式:
一個代表 minimum_dissatisfaction 回傳值的整數。