Solução Informática – Nivel Intermediário – Semana 6

por

Solução por Leonardo Paes

Conhecimento prévio necessário:

Para resolver esse problema, utilizaremos a ideia de Soma de Prefixos.

Para que a tripla $$x \leq y \leq z$$ forme um triângulo não degenerado, é necessário e suficiente que ela satisfaça a condição $$x + y < z$$, devido à desigualdade triangular.

Vamos calcular para todo $$s = x + y$$ quantas maneiras existem para escolher $$(x, y)$$. Para isso, tentaremos todos os $$x$$ e adicionaremos 1 no segmento $$[x + B; x + C]$$ de maneira offline usando somas de prefixo.

Calculando somas de prefixo mais uma vez, podemos encontrar em $$O(1)$$ quantas maneiras de escolher um par $$(x, y)$$ existem de modo que sua $$x+y$$ seja maior que $$z$$.

Tentando todo $$z$$, calculamos a resposta dele.

Complexidade total – $$O (C)$$.

Código de exemplo: