| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1 초 (추가 시간 없음) | 1024 MB (추가 메모리 없음) | 42 | 12 | 11 | 32.353% |
준호는 크기가 $N \times N$인 이차원 배열 $A$를 가지고 있다. 준호가 가진 배열 $A$는 다음과 같은 성질을 가진다:
준호는 배열을 정리하려고 한다. 정리된 배열이란 0ドル \leq i,j \leq N-1$인 모든 정수 순서쌍 $(i,j)$에 대해 $A_{i,j} = i \times N+j$를 만족하는 배열을 말한다.
배열을 정리하기 위해, 준호는 다음 중 원하는 연산을 골라 할 수 있다:
단, 연산 도중 배열의 원소가 $-2^{31}$보다 작아지거나, 2ドル^{31}-1$보다 커지면 안 된다.
이때 $-2^{31}$부터 2ドル^{31}-1$사이의 두 정수 $a$와 $b$에 대해 $a \oplus b$ 연산은 32ドル$비트 부호 있는 정수 자료형에서의 XOR(exclusive OR)로 정의된다. 이에 대해선 노트를 참고하라.
준호가 제한을 만족하며 주어진 연산을 최대 400ドル,000円$회 하여 배열 $A$를 정리된 배열로 바꾸는 방법을 구해보자. 가능한 방법이 여러 가지라면, 아무 방법이나 구해보자.
연산의 횟수를 최소화 할 필요는 없음에 유의하라.
첫째 줄에 배열의 크기를 나타내는 $N$이 주어진다.
둘째 줄부터 $N$개의 줄에 걸쳐 $i+2$번째 줄에 $N$개의 정수 $A_{i,0}, \cdots, A_{i,N-1}$이 공백으로 구분되어 주어진다.
첫째 줄에 준호가 배열 $A$를 정리하기 위한 연산 횟수 $q$를 출력한다. $(0 \leq q \leq 400,000円)$
둘째 줄부터 $q$개의 줄에 걸쳐 준호가 배열에 $i$번째로 적용한 연산의 번호와 선택한 $x$와 $y$를 $i+1$번째 줄에 공백으로 구분하여 출력한다.
모든 가능한 입력에 대해 주어진 제한 안에 $A$를 정리할 수 있음을 보일 수 있다.
2 0 1 3 2
4 1 0 0 6 1 0 2 0 0 6 1 1
각 연산 이후 배열은 다음과 같이 변경된다: $\begin{bmatrix}0& 1\\ 3& 2\end{bmatrix}$ $\rightarrow$ $\begin{bmatrix}1& 1\\ 3& 2\end{bmatrix}$ $\rightarrow$ $\begin{bmatrix}1& 1\\ 2& 2\end{bmatrix}$ $\rightarrow$ $\begin{bmatrix}0& 1\\ 2& 2\end{bmatrix}$ $\rightarrow$ $\begin{bmatrix}0& 1\\ 2& 3\end{bmatrix}$
아래 내용은 32ドル$비트 부호 있는 정수 자료형에서의 비트 표현 방법에 대해 설명합니다.
0ドル$과 양수는 그 값을 그대로 이진수로 표현합니다.
음수는 2ドル$의 보수로 변환하여 저장됩니다. 2ドル$의 보수 표현 방법은 다음과 같습니다:
예를 들어 $-5$를 32ドル$비트 2ドル$의 보수로 표현해 봅시다.
따라서, $-5$는 2ドル$의 보수 방식으로 11111111ドル ,円 11111111 ,円 11111111 ,円 11111011$으로 표현됩니다.
아래 내용은 32ドル$비트 부호 있는 정수 자료형에서의 XOR(exclusive OR)연산에 관해 설명합니다.
두 정수의 XOR 연산은 각 비트 자리에서 서로 다르면 1ドル,ドル 같으면 0ドル$이 되는 비트 연산입니다. 예를 들어
11111110ドル ,円 00000000 ,円 00000000 ,円 00000101 \oplus 00001111 ,円 00000000 ,円 01111000 ,円 00000101$을 계산하면
11110001ドル ,円 00000000 ,円 01111000 ,円 00000000$이 됩니다.