一 问题描述
每天挤奶时,约翰的 N 头奶牛都以相同的顺序排队,他挑选一系列连续的奶牛来做游戏。为了让所有的奶牛都开心,他们的高度差异不应该太大。约翰列出的 Q 组奶牛和他们的高度,他希望确定每个小组中最高和最矮的奶牛之间的高度差异。
二 输入和输出
1 输入
第 1 行包含两个整数,N 和 Q,接下来的 N 行。每行包含一个整数,表示奶牛的高度,最后 Q 行,每行都包含两个整数 A 和 B,代表从 A 到 B 的奶牛范围。
2 输出
输出 Q 行,每行都包含一个整数,表示该范围内最高和最矮奶牛的高度差。
三 输入和输出样例
1 输入样例
6 3
1
7
3
4
2
5
1 5
4 6
2 2
2 输出样例
6
3
0
四 分析和设计
1 分析
本问题是求解最大值和最小值只差,是典型的 RMQ 问题,可以使用 ST 解决。
2 设计
a 创建 ST
b 查询 [a,b]区间的最大值和最小值,然后输出其差值。
五 代码
package com.platform.modules.alg.alglib.poj3264;
public class Poj3264 {
public String output = ""