시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
1 초 | 1024 MB | 529 | 285 | 238 | 53.846% |
$1$부터 $N$까지 서로 다른 정수가 적혀있는 카드를 $N$장 가지고 있다. 각 카드에는 앞면과 뒷면이 존재한다. 카드의 앞면에는 숫자가 적혀있고, 뒷면에는 카드의 무늬가 그려져 있다.
$N$장의 카드를 원하는 순서대로 앞면이 보이도록 일렬로 배열한다. 이제 아래의 규칙에 따라 카드를 뒤집을 것이다.
카드의 장수 $N$이 주어질 때, 모든 카드를 뒤집을 수 있도록 배열할 수 있는지 알고 싶다. 따라서 모든 카드를 뒤집을 수 있는 배치가 존재하는지 여부를 출력하고, 그러한 배치가 존재한다면 카드를 배열하는 방법과 뒤집는 순서를 출력해야 한다.
첫 번째 줄에 카드의 장수 $N$이 주어진다. $(1 \le N \le 200\ 000)$
첫 번째 줄에 모든 카드를 뒤집을 수 있도록 배열할 수 있는지를 출력해야 한다. 만약 가능하다면 YES
, 불가능하다면 NO
를 출력해야 한다.
만약 모든 카드를 뒤집을 수 있도록 배열할 수 있다면, 두 번째 줄에 카드의 배열 $b_1, b_2, ..., b_n$을 출력한다. $b_i$는 $i$번째 카드에 적혀있는 숫자를 의미한다.
이후 세 번째 줄에 카드를 뒤집는 순서 $c_1, c_2, ..., c_n$을 출력한다. $c_i$는 $i$번째로 뒤집을 카드의 위치를 의미한다.
만약 가능한 배열 방법 또는 뒤집는 순서가 여러 가지일 경우 가능한 하나만 출력하면 된다.
3
YES 1 3 2 3 1 2
University > UNIST-DGIST-POSTECH > 2023 UNIST-DGIST-POSTECH 연합 프로그래밍 경진대회 (2023 UDPC) C번