Problema A - Sequências Complementares

O Samuel acabou de ler um artigo sobre a sequência de Thue-Morse, e ficou fascinado com a sua beleza. É uma sequência binária inifinita com propriedades tão interessantes como nunca apresentar três blocos (subsequências contíguas de bits) consecutivos iguais entre si. Os primeiros bits da sequência de Thue-Morse são 01101001100101101001011001101001...

Para obter esta sequência faz-se o seguinte:

O Samuel resolveu começar a contar os bits ligados (marcados a 1) para conhecer melhor a sequência, mas rapidamente ficou cansado e resolveu pedir a tua ajuda. O que ele quer mesmo saber é quantos 1's existem num dado intervalo de posições [a,b] (o primeiro elemento da sequência está na posição 1). Por exemplo, se o intervalo em que ele está interessado for [1,10] (indicado a vermelho), existem 5 bits ligados (indicados a negrito):

01101001100101101001011001101001...

Se o intervalo fosse [5,8], existiam apenas dois bits ligados:

01101001100101101001011001101001...

O Samuel ficou empolgado e achou que podia até generalizar a sequência, modificando os bits iniciais que dão início ao processo de geração. Por exemplo, se os bits iniciais forem 1101, a sequência fica:

Claro que o Samuel quer também poder contar os bits ligados para uma sequência geral como esta. Será que podes ajudá-lo?

O Problema

Dada um conjunto de N bits iniciais, e P perguntas, cada uma indicando um intervalo [ai, bi], a tua tarefa é, para cada pergunta, indicar quantos bits estão ligados no intervalo correspondente, supondo que a sequência foi gerada como atrás descrito (ir sucessivamente concatenando o complemento da sequência actual).

Input

Na primeira linha vem um número inteiro N indicando o número de bits iniciais.

Na segunda linha vêm os N bits (0's ou 1's) da sequência.

Na terceira linha vem um único inteiro P indicando o número de perguntas. Seguem-se P linhas, cada uma com dois inteiros ai e bi indicando o intervalo a considerar para essa pergunta.

Output

O output deve conter P linhas, uma para cada pergunta, indicando o número de ligados entre as posições ai e bi (inclusive) na sequência criada como atrás descrito e que começa com os bits iniciais indicados

Restrições

São garantidos os seguintes limites em todos os casos de teste que irão ser colocados ao programa:

1 ≤ N ≤ 10       Número de bits iniciais
1 ≤ P ≤ 1 000       Número de perguntas
1 ≤ ai ≤ bi ≤ 1015       Posições dos intervalos a considerar

Nota que para ler um número da ordem de 1015 são necessários 64 bits, ou seja, deves usar o long long de C/C++ ou o long de Java.

Os casos de teste deste problema estão organizados em 5 grupos com restrições adicionais diferentes:

Grupo Nº de Pontos Restrições adicionais
1 10 ai ≤ bi ≤ 100
2 20 ai ≤ bi ≤ 107, bi - ai ≤ 100
3 20 ai ≤ bi ≤ 107
4 25 bi - ai ≤ 100
5 25 (nenhuma restrição adicional)

Exemplo de Input 1

1
0
5
1 10
5 8
6 7
2 2
3 20

Exemplo de Output 1

5
2
0
1
9

Explicação do Exemplo 1

Os intervalos correspondentes a cada uma das 5 perguntas são:

Exemplo de Input 2

3
110
4
2 11
4 8
12 14
1 20

Exemplo de Output 2

5
1
0
11

Explicação do Exemplo 2

Os intervalos correspondentes a cada uma das 4 perguntas são:


Prova de Seleção para as IOI'2017
Departamento de Ciência de Computadores
Faculdade de Ciências da Universidade do Porto
(11 de Junho de 2017)