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, будут набирать не менее
type omas=array[1..n] of integer;
Procedure Del (var z:omas; k:byte);
var i:byte;
begin
for i:=k to n-1 do z[i]:=z[i+1];
z[n]:=0;
end;
var a:omas; i,b:integer;
begin
Randomize;
for i:=1 to n do
begin
a[i]:=random(20);
write(a[i]:4);
end;
writeln;
b:=6;
i:=1;
while (i<=n)and(a[i]<>b) do i:=i+1;
if i<=n then
begin
Del(a,i);
writeln('Размерность массива = ',n-1);
for i:=1 to n-1 do write(a[i]:4);
writeln;
end else writeln('Массив не изменился');
end.
Пример:
12 13 6 7 17 1 18 17 3 2 12 3 16 6 7 13 0 2 5 18
Размерность массива = 19
12 13 7 17 1 18 17 3 2 12 3 16 6 7 13 0 2 5 18
Еще пример: магазинные чеки. Не будет же машина (из-за технической сложности) или человек (из-за лени) писать на чеке: "продано столько-то столько-то того-то того-то ... пакет апельсинов весил шестьсот пядесят три грамма ... итд". На чеке будет табличка, где четко и точно будет написано то, что человек приобрел.
Вот. Так что табличные модели, несомненно, лучше словесных.