Files
problemas-para-competicao-p…/chuva/statement/tutorial.tex

21 lines
1.0 KiB
TeX

Podemos simular diretamente o espalhamento da água. Cada posição molhada gera
novas posições molhadas segundo as regras do enunciado:
\begin{itemize}
\item se a célula imediatamente abaixo está dentro da matriz e é
\texttt{.}, ela também fica molhada;
\item se existe uma prateleira imediatamente abaixo da posição atual, a água
pode se espalhar para a esquerda e para a direita na mesma linha.
\end{itemize}
Para evitar processar a mesma posição várias vezes, sempre que uma célula
\texttt{.} fica molhada, trocamos seu caractere para \texttt{o} e a colocamos em
uma fila. Enquanto a fila não estiver vazia, removemos uma posição e tentamos
aplicar os movimentos descritos acima.
As prateleiras nunca viram água, portanto células com \texttt{\#} são apenas
obstáculos que podem sustentar o espalhamento lateral.
Como cada célula da matriz é inserida na fila no máximo uma vez, a complexidade
de tempo é $O(N \cdot M)$. A matriz e a fila também usam $O(N \cdot M)$ de
espaço.