Quechuas 歡迎你來到 IOI 2025,並準備了一份特別的禮物:兩個長度均為 $N$ 的陣列 $A$ 和 $B$。兩個陣列中的元素索引皆從 $0$ 到 $N - 1$。
為了確保你妥善保管這份禮物,他們會一次一個地詢問你 $Q$ 個問題。每個問題包含兩個索引 $i$ 和 $j$,並詢問:$A[i]$ 與 $B[j]$ 的和是多少?
實作細節
你需要實作的第一個程序是:
void initialize(std::vector<int> A, std::vector<int> B)
- $A, B$:長度為 $N$ 的兩個陣列,即 Quechuas 的禮物。
- 對於每個測試案例,此程序會在任何
answer_question的呼叫之前被呼叫恰好一次。
你需要實作的第二個程序是:
int answer_question(int i, int j)
- $i, j$:描述問題的整數。
- 此程序會被呼叫 $Q$ 次。
- 此程序應回傳 $A[i]$ 與 $B[j]$ 的和。
資料範圍
- $1 \le N \le 200\,000$
- 對於每個 $0 \le k < N$,皆有 $0 \le A[k], B[k] \le 10^9$
- $1 \le Q \le 200\,000$
- 每個問題中,$0 \le i, j < N$
子任務
| 子任務 | 分數 | 其他限制 |
|---|---|---|
| 1 | 25 | 陣列 $A$ 中的所有元素皆相等,且陣列 $B$ 中的所有元素皆相等。 |
| 2 | 35 | $N \le 1000$ |
| 3 | 40 | 無其他限制。 |
範例
考慮以下呼叫:
initialize([2, 1, 3], [0, 7, 8])
在此情況下,$N = 3$,且贈送給你的兩個陣列為 $A = [2, 1, 3]$ 以及 $B = [0, 7, 8]$。
現在考慮以下呼叫:
answer_question(0, 1)
此呼叫應回傳 $A[0] = 2$ 與 $B[1] = 7$ 的和,即 $9$。
考慮以下呼叫:
answer_question(2, 2)
此呼叫應回傳 $A[2] + B[2] = 3 + 8 = 11$。
範例評測程式
輸入格式:
N A[0] A[1] ... A[N-1] B[0] B[1] ... B[N-1] Q i[0] j[0] i[1] j[1] ... i[Q-1] j[Q-1]
在此,$i[k]$ 與 $j[k]$ ($0 \le k < Q$) 指定了每次呼叫 answer_question 的參數。
輸出格式:
S[0] S[1] ... S[Q-1]
在此,$S[k]$ ($0 \le k < Q$) 為呼叫 answer_question(i[k], j[k]) 所回傳的整數。