範例程式碼 uva501

//uva501
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#include <vector>
#define N 30010

using namespace std;

typedef priority_queue<int> PQI;

int k, m, n, I;
int a[N], u[N];

int main(void) {
	int i, l;
	scanf("%d", &k);
	
	while(k--) {
		PQI minQ, maxQ;
		scanf("%d%d", &m, &n);

		for(i = 1; i <= m; ++i) scanf("%d", &a[i]);
		for(i = 1; i <= n; ++i) scanf("%d", &u[i]);

		I = 1;
		for(l = 1; l <= m; ++l) {
			maxQ.push(a[l]);
			minQ.push(-maxQ.top());
			maxQ.pop();

			while(I <= n && u[I] == l) {
				maxQ.push(-minQ.top()); minQ.pop();
				printf("%d\n", maxQ.top());
				++I;
			}
		}

		if(k) putchar('\n');
	}
	return 0;
}