1. 程式人生 > 其它 >字首極差

字首極差

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=1e5+10;

int n, q;
int a[N];
int sb[N], ss[N];
//預處理出來最大值, 最小值, 然後查表 
int main()
{
	cin>>n>>q;
	for(int i=1;i<=n;i++)
	{
		scanf("%d", &a[i]);
		if(i==1)
		{
			sb[i]=a[i];
			ss[i]=a[i];
		}
		else
		{
			sb[i]=max(a[i], sb[i-1]);
			ss[i]=min(a[i], ss[i-1]);
		}
	}
	
	while(q--)
	{
		int x;
		scanf("%d", &x);
		
		printf("%d ", sb[x]-ss[x]);
	}
	
	return 0;
}