Submeter | Todas submissőes | Melhores | Voltar |
ELECTR10 - Necessidades elétricas |
Você irá construir uma nova fábrica na sua cidade. Já que você necessida de muita energia elétrica, ter a fábrica posicionada perto de uma estação de força é importante. Você quer construir uma lista priorizada das possíveis localizações.
A área onde a fábrica precisa ser construída pode ser representada como uma grade retangular de N linhas e M colunas de células. Algumas dessas células contem uma estação de força. A nova fábrica ocupa exatamente uma célula, e pode ser construída em qualquer célula livre (ou seja, qualquer célula que não contém uma estação de força).
Numerando as linhas de 1 até N e as colunas de 1 até M, a localização de uma célula pode ser descrita por dois inteiros. A célula ( i , j ) é a célula na linha i e coluna j. A distância entre as células (i0,j0) e (i1,j1) é max( |i0 - i1| , |j0 - j1| ) onde | x | representa o valor absoluto de x. A prioridade elétrica de uma localização é a menor distância até qualquer estação de força.
Com isso em mente, você vai numerar todas as possíveis localizações com inteiros consecutivos começando de 1. Você fará isso em ordem crescente de prioridade elétrica. Dentre locais com a mesma prioridade elétrica, você vai numerá-los em ordem crescente de seu índices de linha. Dentre locais com mesmas prioridade elétrica e índice de linha, você vai listá-los em ordem crescente de seu índices de coluna.
Na figura abaixo você pode ver uma grade 4 x 7. Células pretas são as células onde há uma estação de força. Células cinza escuras possuem prioridade elétrica 1, cinza claras prioridade elétrica 2 e células brancas prioridade elétrica 3. O número dentro de cada célula é o número atribuído por você à célula.
Você receberá inúmeras consultas sobre a lista construída. Em cada consulta será dado um número representando a posição na lista final e você deverá dizer a qual célula foi atribuída a posição dada.
Entrada
Cada caso de teste se estende por várias linhas. A primeira linha contém três inteiros N, M e P, representando o número de linhas e colunas da grade (1 ≤ N,M ≤ 109) e o número de estações de força (1 ≤ P ≤ 20). Cada uma das P linhas seguintes contém dois inteiros R e C representando a linha e a coluna de uma estação de força (1 ≤ R ≤ N e 1 ≤ C ≤ M). Em cada caso de teste, todas as estações de força estão em células distintas. A próxima linha contém um único inteiro Q representando o número de consultas (1 ≤ Q ≤ 50). Então segue uma linha com Q inteiros p1, ... , pQ representando as posições da lista priorizada (1 ≤ pi ≤ N x M - P).
O último caso de teste é seguido de uma linha contendo três zeros.
Saída
Para cada caso de teste, imprima Q+1 linhas. A linha i das primeiras Q linhas devem conter dois inteiros representando a linha e a coluna da localização que foi atribuída ao número pi. A última linha de cada caso deve conter um único caractere '-' (hífen).
Exemplo
Entrada: 4 7 2 2 5 4 4 6 1 6 11 16 21 26 1000000000 1000000000 1 1 1 1 999999999999999999 0 0 0 Saída: 1 4 3 3 4 5 2 7 4 7 4 1 - 1000000000 1000000000 -
Adicionado por: | Wanderley Guimarăes |
Data: | 2011-06-10 |
Tempo limite: | 0.300s |
Tamanho do fonte: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Linguagem permitida: | Todas exceto: ASM64 CLOJURE ERL FSHARP PERL6 PY_NBC SCALA TCL |
Origem: | Final Sul-Americana da Maratona de Programação da ACM 2010 |
hide comments
2011-07-12 01:15:49 Juarez Paulino
Eu acho que o Carlos sofreu bastante aí pra baixar em menos de 1s. Eu mesmo só passei bem sofrido tratando isolado os casos que P==1. |
|
2011-07-01 15:02:09 Carlos Eduardo Rodrigues Alves [USJT]
Este problema está no SPOJ principal: 7762. Electric Needs, MELAR10 Pelos tempos que eu vi lá, sugiro aumentar o limite deste problema para uns 5s. Foi um sufoco baixar o tempo para 1s. Last edit: 2011-07-02 02:28:23 |