E. Реформа ЕГЭ Ограничение времени 1.5 секунд
Ограничение памяти 256Mb
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
В министерстве образования Берляндии решили окончательно запутать берляндских школьников и ввели реформу Берляндского Единого Государственного Экзамена. Теперь на экзамене каждый школьник получит n задач, каждая из которых стоит ai . Но при этом итоговый выставляется по следующим правилам:
Если школьник решил одну задачу, то итоговый равен за эту задачу.
Если школьник решил больше одной задачи, то проверяющие выбирают две решенные задачи i и j такие, что максимальный.
Выражение означает применение побитовой операции xor к числам x и y. Данная операция существует во всех современных языках программирования, например, в языках C++, Java и Python она обозначена как «», в Pascal – как «xor».
Выпускник Миша хочет набрать самый большой на экзамене, который можно получить для данного набора задач. Миша умный и решит любую задачу, которые Вы для него выберете, но также Миша ленивый, поэтому он хочет решить как можно меньше задач, при этом все равно получив самый большой .
Скажите Мише – какой максимальный он сможет набрать на экзамене.
Формат ввода
В первой строке задано число n (1 ≤ n ≤ 200 000) – количество задач. Во второй строке через пробел заданы целые числа (0 ≤ ai ≤ 109) – стоимости задач.
Формат вывода
Выведите одно целое число – максимально возможный , который сможет набрать Миша.
Пример 1
Ввод Вывод
4
2 2 4 8
12
Пример 2
Ввод Вывод
5
9 7 3 5 2
14
Пример 3
Ввод Вывод
7
15 4 5 5 2 6 7
15
Примечания
В первом примере Миша должен решить третью и четвертую задачи. Их xor будет равен .
В третьем примере Миша должен решить только первую задачу, тогда его будет равен 15.
Решения, правильно работающие для n ≤ 10, ai ≤ 100, будут набирать не менее
Решения, правильно работающие для n ≤ 200 000, ai ≤ 109, где для всех ai верно, что они – степени двойки, будут набирать не менее
Решения, правильно работающие для n ≤ 2000, ai ≤ 109, будут набирать не менее
Решения, правильно работающие для n ≤ 20 000, ai ≤ 109, будут набирать не менее
ответ:Линейные алгоритмы – алгоритмы, в которых используется алгоритмическая конструкция «Следование», отображающая естественный, последовательный порядок действий. Алгоритм как собраться в школу :
1. Поставить будильник на 7 00 утра
2. Проснуться в 7 00
3. Выключить будильник
4. Пойти умываться
5. Позавтракать
6. Собрать учебники , тетради, пенал
7. Одеться
8. Взять вторую обувь
9. Выйти из дома.
Для изображения алгоритма графически используют блок-схемы. Они представляют собой геометрические фигуры (блоки), соединённые стрелками. Стрелки показывают связь между этапами и последовательность их выполнения. Каждый блок сопровождается надписью.
В цикле с условием while цикл выполняется, пока истинно задающее его условие. Поэтому этот цикл также иногда называют циклом "пока". Часто цикл while используется, когда невозможно заранее предсказать, сколько раз необходимо выполнить тело цикла. В повседневной жизни цикл while можно встретить в алгоритмах, вроде "Пока в пределах видимости есть машины, стоять на месте" или "Пока в ящике есть детали, достать деталь из ящика".
В следующей программе цикл while используется подобно циклу for для вывода на экран всех чисел от 1 до 10:
i=1
while i<=10:
print i
i=i+1
В этой программе переменной i присваивается значение 1. Затем начинается цикл (ключевое слово while) с проверяемым условием i<=10. Тело цикла содержит две инструкции: вывод на экран значения переменной i и увеличение значения переменной i на 1.
При выполнении этого цикла проверяется условие i<=10. Поскольку значение i изначально равно 1, то условие верно и выполняется тело цикла: на экран выводится значение переменной i, то есть 1 и переменной i присваивается значение i+1, то есть 2. Снова проверяется условие, поскольку оно верно, то выполняется блок цикла: на экран выводится число 2 и переменной i присваивается значение 3. Опять проверяется значение цикла, и так далее до тех пор, пока проверяемое условие истинно.