题目
思路
这题比较简单,直接在遍历给定的n个整数时,就直接记录下来位于前 i 个节点时的最大值和最小值,并且记录下来前 i 个节点的极值,最后在询问时给出即可。
代码
#include<stdio.h>
int main()
{
int n,q;
int a[150000];
int flag[150000];
scanf("%d %d",&n,&q);
scanf("%d",&a[0]);
int max=a[0],min=a[0];
flag[1]=max-min;
for(int i=1;i<n;i++){
scanf("%d",&a[i]);
if(a[i]>max){
max=a[i];
}
if(a[i]<min){
min=a[i];
}
flag[i+1]=max-min;
}
int x;
q--;
scanf("%d",&x);
printf("%d",flag[x]);
while(q--){
scanf("%d",&x);
printf(" %d",flag[x]);
}
}