\documentclass[10pt]{article} \usepackage[utf8]{inputenc} \usepackage{amsmath,amsthm,amssymb} \usepackage{fullpage} \usepackage{url} \pagenumbering{gobble} \usepackage{hyperref} \title{ Tutorial: Chuva} \author{OBI 2019} \date{} \begin{document} \maketitle 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. \end{document}