Wilson é um grande admirador de formigas e quer estudar melhor uma espécie, buscando aprender mais sobre seus hábitos.
Para isso, ele observa uma trilha reta, dividida em posições identificadas por números inteiros. Cada posição pode ser ocupada por, no máximo, uma formiga. No início do estudo, não há formigas na trilha.
Ao longo do estudo, acontecem três tipos de eventos (numerados de a ), cada um associado a um número (denotado por ):
1 x: uma nova formiga entra na posição
.
Se já existia uma formiga nesta posição, a formiga antiga sai da trilha,
sendo substituída pela nova.2 x: a posição de toda formiga na trilha é incrementada
em
.
Ou seja, se
,
as formigas se deslocam
posições para a direita; mas se
,
elas se deslocam
posições para a esquerda.3 x: Wilson conta quantas formigas na trilha estão à
esquerda da posição
— ou seja, quantas posições
tais que
possuem uma formiga.Replique o estudo realizado por Wilson, processando os eventos na ordem em que ocorreram e imprimindo a quantidade contada por ele em cada evento do tipo .
A primeira linha contém um inteiro : o número de eventos.
Cada uma das próximas linhas contém dois inteiros e , com e . é o tipo do evento e é o valor do número associado a este evento, mas codificado.
Para obter o valor real de , você deve tomar , onde:
Isso significa que o valor de pode ser obtido pela representação binária resultante da operação . Nessa representação, se o -ésimo bit menos significativo possuir valor , os dígitos binários representam exatamente o número . Caso contrário, eles representam . É garantido que .
Além disso, também é garantido que existe pelo menos um evento do tipo .
Para cada evento do tipo , imprima uma linha contendo um único inteiro: a quantidade de formigas na trilha em posições à esquerda de .
Note que, se sua solução imprimir um valor incorreto para um evento do tipo , para os eventos seguintes o valor de pode ser decodificado incorretamente (considerando que a solução atualiza de acordo). Perceba que isso pode resultar em vereditos diferentes de Wrong Answer, mesmo que a solução de fato tenha imprimido um resultado incorreto.
12 1 3 1 -2 3 3 1 3 1 3 2 -3 3 -2 1 -4 2 7 3 6 3 -12 3 100
1 2 2 0 3
Inicialmente, não há formigas na trilha e r = 0.
Nos dois primeiros eventos, como ainda não houve nenhum evento do tipo 3, obtemos x diretamente com x = v. Assim, entram formigas nas posições 3 e −2. A trilha contém formigas nas posições {−2, 3}.
No terceiro evento, temos x = 3. Existe apenas uma formiga estritamente à esquerda de 3, na posição −2. Portanto, imprimimos 1 e passamos a ter r = 1.
No evento seguinte, o valor fornecido é v = 3. Como r = 1, o valor real é x = 3 ⊕ 1 = 2. Portanto, uma nova formiga entra na posição 2, e as posições ocupadas passam a ser {−2, 2, 3}.
O evento seguinte é novamente 1 3, que também é
decodificado como x = 2. Como
já existe uma formiga nessa posição, ela é substituída pela nova, e o
conjunto de posições ocupadas não muda.
No sexto evento, temos v = −3 e r = 1. Interpretando o XOR nas representações de 64 bits, obtemos x = (−3) ⊕ 1 = −4. Todas as formigas se deslocam, então, 4 posições para a esquerda. Suas novas posições são {−6, −2, −1}.
No próximo evento, v = −2, e x = (−2) ⊕ 1 = −1. Existem duas formigas estritamente à esquerda de −1, nas posições −6 e −2. A formiga que está exatamente em −1 não é contada. Portanto, imprimimos 2 e r passa a ser 2.
Em seguida, 1 -4 é decodificado como x = −2. Já existe uma formiga nessa
posição, então ela é apenas substituída.
No evento 2 7, temos x = 7 ⊕ 2 = 5. Todas as formigas se
deslocam 5 posições para a direita,
passando para {−1, 3, 4}.
No evento 3 6, x = 6 ⊕ 2 = 4. As formigas nas
posições −1 e 3 estão à esquerda de 4, enquanto a formiga na própria posição
4 não é contada. Portanto, imprimimos
2.
No evento seguinte, x = (−12) ⊕ 2 = −10. Não há nenhuma formiga à esquerda de −10, então imprimimos 0. Com isso, r volta a ser 0.
Por fim, como r = 0, o último valor não é alterado: x = 100. As três formigas estão à esquerda dessa posição, então imprimimos 3.