시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
1 초 | 1024 MB | 395 | 134 | 120 | 50.633% |
cs71107은 신기한 기계를 발견했다. 기계에는 $1$번부터 $N$번까지 번호가 붙어있는 $N$ 개의 버튼과 수를 표시하는 장치가 하나 있다. 처음에는 $0$이 표시되어 있다.
cs71107은 버튼을 누를 때마다 표시되는 수가 특정한 규칙에 따라 변한다는 사실을 알아냈다. 기존에 표시되는 수를 $X$라고 할 때, $i$번 버튼을 누르면 표시되는 수가 $X \oplus A_{i}$, 즉 $X$와 $A_{i}$의 bitwise XOR로 변한다는 사실을 알아냈다.
버튼을 몇 개씩 눌러보던 중 cs71107은 표시되는 수로 서로 다른 수를 최대한 많이 만들고 싶다고 생각했다. 단, 아무 방법으로만 만들면 재미없다고 생각해서 버튼을 최대한 적게, 또 그런 방법이 여러 개라면 누른 버튼의 번호로 이루어진 수열이 사전 순으로 가장 앞선 방법으로 누르고 싶었다.
안타깝게도 cs71107은 이 문제를 해결할 수 있을 정도로 똑똑하지 않다. 여러분이 cs71107을 도와서 문제를 해결해 주자!
첫 번째 줄에 $N$이 주어진다.
두 번째 줄에 $N$개의 정수 $A_1,A_2, \cdots , A_N$이 공백으로 구분되어 주어진다.
첫째 줄에 서로 다른 수를 최대한 많이 만들기 위해 버튼을 눌러야 하는 최소 횟수인 $K$를 출력한다.
두 번째 줄부터 $K$ 개의 줄을 출력한다. 이 중 $i$ 번째 줄에는 $i$ 번째로 눌러야 하는 버튼의 번호를 출력한다. 가능한 답이 여럿 있으면 사전 순으로 가장 앞서는 답을 출력한다.
2 1 2
3 1 2 1
$1$번, $2$번, $1$번 버튼을 순서대로 누르면 표시되는 수는 차례로 $0$, $1$, $3$, $2$가 된다.
Contest > BOJ User Contest > Good Bye, BOJ > Good Bye, BOJ 2021! E번