Zgłaszanie | Wszystkie zgłoszenia | Najlepsze | Lista |
FR_09_13 - XOR |
XOR
Oto gra umysłowa, którą na potrzebę przeczekania niektórych zajęć edukacyjnych, wymyślił sobie Jasiu. Może i tobie się przyda. Z podanego zbioru liczb weź dwie liczby i wynik takiego wyboru zapisz jako ich bitowe wykluczenie (XOR), po czym jedną z wybranych liczb usuń z tego zbioru. W kolejnym kroku ponownie wybierz dwie liczby i zapisz wynik operacji XOR, a jedną z nich, wedle uznania, usuń ze zbioru. Kroki te powtarzaj tak długo, aż w zbiorze pozostanie tylko jedna liczba. Wówczas zsumuj wszystkie zapisane wyniki.
A teraz zrób to od nowa, ale optymalnie, czyli tak dobieraj i usuwaj liczby ze zbioru, aby suma końcowa wszystkich wyników XOR była jak największa.
Wejście
Pierwszy wiersz zawiera pojedynczą liczbę całkowitą d (2 ≤ d ≤ 104) - liczbę elementów zbioru. W wierszu drugim podanych jest d różnych liczb całkowitych ai, (1 ≤ ai ≤ 230).
Wyjście
Na wyjściu wypisz największą możliwą sumę, którą można uzyskać optymalizując kolejne kroki.
Przykład
Wejście
4
3 5 8 11
Wyjście
38
Wyjaśnienie
Optymalne rozwiązanie prowadzące do wyniku 38 to:
1. Bierzemy parę liczb 3 i 8 (3 XOR 8 = 11), usuwamy liczbę 3, liczba 8 wraca do zbioru.
2. Bierzemy parę liczb 5 i 8 (5 XOR 8 = 13), usuwamy liczbę 8, liczba 5 wraca do zbioru.
3. Bierzemy parę liczb 5 i 11 (5 XOR 11 = 14) i usuwamy dowolną z nich.
W zbiorze pozostała jedna liczba, a suma wszystkich bitowych wykluczeń (XOR) wynosi 11+13+14=38.
Dodane przez: | Mariusz Śliwiński |
Data dodania: | 2018-05-21 |
Limit czasu wykonania programu: | 1s-3s |
Limit długości kodu źródłowego | 50000B |
Limit pamięci: | 1536MB |
Cluster: | Cube (Intel G860) |
Języki programowania: | All except: ASM32-GCC MAWK BC C-CLANG NCSHARP CPP14-CLANG COBOL COFFEE D-CLANG D-DMD ELIXIR FANTOM FORTH GOSU GRV JS-MONKEY JULIA KTLN NIM OBJC OBJC-CLANG OCT PICO PROLOG R RACKET RUST SCM qobi CHICKEN SQLITE SWIFT UNLAMBDA VB.NET |