\begin{algorithm} \caption{Insert an Element into a Young Matrix} \begin{algorithmic} \PROCEDURE{YoungInsert}{$Y, key$} \STATE $m = Y.\text{row-num}$ \STATE $n = Y.\text{col-num}$ \IF{$Y[m, n] < \infty$} \STATE \textbf{error} "young matrix overflow" \ENDIF \STATE \CALL{YoungDecreaseKey}{$Y, m, n, key$} \ENDPROCEDURE \STATE \STATE \COMMENT{decrease $Y[i, j]$ down to $key$} \PROCEDURE{YoungDecreaseKey}{$Y, i, j, key$} \IF{$key > Y[i, j]$} \STATE \textbf{error} "new key is larger than the current key" \ENDIF \STATE $Y[i, j] = key$ \WHILE{($i > 1$ \AND $Y[i - 1, j] > Y[i, j]$) \OR ($j > 1$ \AND $Y[i, j - 1] > Y[i, j]$)} \IF{$Y[i - 1, j] > Y[i, j - 1]$} \STATE exchange $Y[i, j]$ with $Y[i - 1, j]$ \STATE $i = i - 1$ \ELSE \STATE exchange $Y[i, j]$ with $Y[i, j - 1]$ \STATE $j = j - 1$ \ENDIF \ENDWHILE \ENDPROCEDURE \end{algorithmic} \end{algorithm}