Для решения данной задачи необходимо реализовать алгоритм, который будет выполнять следующие шаги:
- Считать входные данные:
- Считать числа n и q.
- Считать массив a из n чисел.
- Считать q пар чисел (pos, X).
- Вычислить начальное минимальное значение XOR:
- Для каждой пары (i, j) где 1 ≤ i < j ≤ n, вычислить a[i] ⊕ a[j].
- Найти минимальное значение среди всех полученных XOR значений.
- Вывести это значение.
- Выполнить q изменений:
- Для каждого изменения (pos, X):
- Заменить a[pos-1] на X.
- Вычислить новое минимальное значение XOR как в шаге 2.
- Вывести это значение.
Пример кода на Python:
def solve():
n, q = map(int, input().split())
a = list(map(int, input().split()))
def calculate_min_xor(arr):
min_xor = float('inf')
for i in range(len(arr)):
for j in range(i + 1, len(arr)):
min_xor = min(min_xor, arr[i] ^ arr[j])
return min_xor
print(calculate_min_xor(a))
for _ in range(q):
pos, x = map(int, input().split())
a[pos - 1] = x
print(calculate_min_xor(a))
solve()
Для входных данных:
5 2
3 1 2 5 4
3 100
4 1000
Результат работы:
- Начальный массив: [3, 1, 2, 5, 4]
- (3 ⊕ 1) = 2
- (3 ⊕ 2) = 1
- (3 ⊕ 5) = 6
- (3 ⊕ 4) = 7
- (1 ⊕ 2) = 3
- (1 ⊕ 5) = 4
- (1 ⊕ 4) = 5
- (2 ⊕ 5) = 7
- (2 ⊕ 4) = 6
- (5 ⊕ 4) = 1
- Минимальное XOR значение: 1
- Изменение 1: pos = 3, x = 100
- Новый массив: [3, 1, 100, 5, 4]
- (3 ⊕ 1) = 2
- (3 ⊕ 100) = 97
- (3 ⊕ 5) = 6
- (3 ⊕ 4) = 7
- (1 ⊕ 100) = 101
- (1 ⊕ 5) = 4
- (1 ⊕ 4) = 5
- (100 ⊕ 5) = 105
- (100 ⊕ 4) = 104
- (5 ⊕ 4) = 1
- Минимальное XOR значение: 1
- Изменение 2: pos = 4, x = 1000
- Новый массив: [3, 1, 100, 1000, 4]
- (3 ⊕ 1) = 2
- (3 ⊕ 100) = 97
- (3 ⊕ 1000) = 1003
- (3 ⊕ 4) = 7
- (1 ⊕ 100) = 101
- (1 ⊕ 1000) = 1001
- (1 ⊕ 4) = 5
- (100 ⊕ 1000) = 900
- (100 ⊕ 4) = 104
- (1000 ⊕ 4) = 1004
- Минимальное XOR значение: 2
Ответ:
1
1
2