QOJ.ac

QOJ

Time Limit: 3 s Memory Limit: 1024 MB Total points: 150

#9098. Catos extraterrestres

Statistics

A maior parte da superfície de um planeta extraterrestre é deserto, pelo que raramente chove. Todas as plantas nesse planeta são catos. Como a chuva é tão escassa, os catos evoluíram uma forma de cooperar para armazenar água.

Uma região do planeta é um plano bidimensional com apenas as direções cima-baixo e esquerda-direita. Nela existem $N$ catos encostados uns aos outros numa fila. Cada cato tem $1$ metro de largura, e as suas alturas podem diferir. Para embelezar o ambiente, deixam-se apenas os catos de $S$ a $E$. Depois chove o suficiente para encher todas as áreas acima dos catos que podem reter água. A água acumula-se como mostrado abaixo. Na figura, considere removidos os catos fora do intervalo indicado pelas setas.

problem_9098_8d8fb07b8bfc98519f9cf0827921f775.png

Escreva um programa que, dadas as alturas e um intervalo de catos restantes, calcule a água retida como uma área. São dados no máximo $Q$ intervalos. Cada intervalo é sempre aplicado ao estado inicial em que existem todos os catos.

Deve implementar as seguintes funções.

  • void init( int H[] ): É chamada exatamente uma vez no início. $H$ é um array (vetor) de tamanho $N$ com as alturas dos catos da esquerda para a direita. $N$ é o número de catos.
  • int query( int S, int E ): Devolve a área de água retida após chuva suficiente quando só ficam os catos de $S$ a $E$ ($1 \le S \le E \le N$). É chamada no máximo $Q$ vezes. Todas as chamadas são independentes: remover catos numa chamada não afeta as outras.

Detalhes de implementação

Deve submeter exatamente um ficheiro chamado cactus.cpp. Este ficheiro deve implementar as seguintes funções.

  • void init( int H[] )
  • long long query( int S, int E )

As funções devem comportar-se como descrito acima. Pode definir outras funções para uso interno. O código submetido não deve realizar entrada ou saída nem aceder a outros ficheiros.

Avaliador de exemplo

O avaliador fornecido lê a entrada no seguinte formato.

  • Linha 1: $N$, $Q$.
  • Linha seguinte: $N$ inteiros positivos, as alturas dos catos da esquerda para a direita.
  • Próximas $Q$ linhas: dois inteiros positivos $S,E$, indicando que chove restando apenas os catos de $S$ a $E$ ($1 \le S \le E \le N$).

O avaliador fornecido imprime os valores devolvidos pela sua função query(), um por linha.

Restrições

  • $1 \le N \le 500\,000$, $1 \le Q \le 500\,000$; a altura de cada cato é pelo menos $1$ e no máximo $10^9$.

Subtarefas

Subtarefas 1 (13 pontos)

  • $1 \le N \le 5\,000$, $1 \le Q \le 5\,000$

Subtarefas 2 (12 pontos)

  • $1 \le N \le 5\,000$

Subtarefas 3 (22 pontos)

  • A altura de cada cato é no máximo $20$.

Subtarefas 4 (34 pontos)

  • $1 \le N \le 100\,000$, $1 \le Q \le 100\,000$

Subtarefas 5 (69 pontos)

  • Sem restrições adicionais às originais.

Exemplos

Entrada 1

10 3
1 3 2 5 1 4 6 2 1 3
2 8
2 4
7 9

Nota

Abaixo apresenta-se uma execução de exemplo do seu código para a entrada acima.

Chamada Resultado
init( {1, 3, 2, 5, 1, 4, 6, 2, 1, 3} ) Chamada inicial
query( 2, 8 ) Chamada de consulta, valor devolvido $6$
query( 2, 4 ) Chamada de consulta, valor devolvido $1$
query( 7, 9 ) Chamada de consulta, valor devolvido $0$

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.