Time Limit: 5000MS | Memory Limit: 65536K | |
Total Submissions: 48911 | Accepted: 22908 | |
Case Time Limit: 2000MS |
Description
For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line up in the same order. One day Farmer John decides to organize a game of Ultimate Frisbee with some of the cows. To keep things simple, he will take a contiguous range of cows from the milking lineup to play the game. However, for all the cows to have fun they should not differ too much in height.
Farmer John has made a list of Q (1 ≤ Q ≤ 200,000) potential groups of cows and their heights (1 ≤ height ≤ 1,000,000). For each group, he wants your help to determine the difference in height between the shortest and the tallest cow in the group.
Input
Lines 2.. N+1: Line i+1 contains a single integer that is the height of cow i
Lines N+2.. N+ Q+1: Two integers A and B (1 ≤ A ≤ B ≤ N), representing the range of cows from A to B inclusive.
Output
Sample Input
6 3 1 7 3 4 2 5 1 5 4 6 2 2
Sample Output
6 3 0题目大意:一个农夫有N头牛,每头牛的高度不同,给出一个区间,我们需要找出其中最高的牛和最低的牛的高度差。
解题思路:一道标准的线段树问题,要用一个节点来存区间的左(Node[i].left)右边界(Node[i].right)以及这个区间里的最大值(Node[i].max)和最小值(Node[i].min)。
求高度差时可以设一个hei和low来存储最大值最小值,输出的值为hei-low。