Жители Кечуа приветствуют вас на IOI 2025 особым подарком: двумя массивами $A$ и $B$, каждый длины $N$. Элементы в обоих массивах индексируются от $0$ до $N - 1$.
Чтобы убедиться, что вы бережно относитесь к их подарку, они зададут вам $Q$ вопросов, по одному за раз. Каждый вопрос состоит из двух индексов, $i$ и $j$, и звучит так: какова сумма $A[i]$ и $B[j]$?
Детали реализации
Первая процедура, которую вы должны реализовать:
void initialize(std::vector<int> A, std::vector<int> B)
- $A, B$: два массива длины $N$, подарок жителей Кечуа.
- Эта процедура вызывается ровно один раз для каждого теста, перед любыми вызовами
answer_question.
Вторая процедура, которую вы должны реализовать:
int answer_question(int i, int j)
- $i, j$: целые числа, описывающие вопрос.
- Эта процедура вызывается $Q$ раз.
- Эта процедура должна возвращать сумму $A[i]$ и $B[j]$.
Ограничения
- $1 \le N \le 200\,000$
- $0 \le A[k], B[k] \le 10^9$ для каждого $k$, такого что $0 \le k < N$.
- $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$.
Примеры
Входные данные 1
3 2 1 3 0 7 8 2 0 1 2 2
Выходные данные 1
9 11