Solução escrita por Caique Paiva
Conhecimento prévio necessário:
A ideia principal é a seguinte: Se um quadrado (i, j) é uma joia, então, quantas quadruplas existem, com esse fixo? A resposta é a quantidade de na linha depois de vezes a quandidade de na coluna depois de . Por exemplo, para no exemplo abaixo, temos na linha depois de , e temos na coluna depois de , então, a resposta para essa quadrupla é .
Então, sendo a resposta dessa pergunta para o par , a resposta do problema vai ser a soma de todas essas respostas. Portanto, podemos calcular essa soma de valores em , então, se conseguirmos responder essa pergunta em , o problema está resolvido, e nós conseguimos responder essa pergunta em com uma prefix sum! Seja um vetor que, na posição , guarda a quantidade de na linha depois de . Veja que e que (Se é ). Então, conseguimos calcular esse valor em . Para fazer a prefix sum das colunas , é análogo.
Recomendamos que você tente implementar o problema antes de ver o código. Veja a implementação nesse link.