| 比赛 | 
    20111021 | 
    评测结果 | 
    AAAAAA | 
    | 题目名称 | 
    黑盒子 | 
    最终得分 | 
    100 | 
    | 用户昵称 | 
    Truth.Cirno | 
    运行时间 | 
    0.000 s  | 
    | 代码语言 | 
    C++ | 
    内存使用 | 
    0.00 MiB  | 
    | 提交时间 | 
    2011-10-21 20:08:10 | 
显示代码纯文本
#include <cstdio>
using namespace std;
int add[30001],get[30001],a[30002]={20000000},ava=0;
void insert(int x)
{
	int i,l,r,mid;
	l=0;
	r=ava;
	mid=(l+r)/2;
	while (l<r)
	{
		if (x>a[mid])
			l=mid+1;
		else if (x<a[mid])
			r=mid;
		else
			break;
		mid=(l+r)/2;
	}
	for (i=ava+1;i>=mid+1;i--)
		a[i]=a[i-1];
	a[mid]=x;
	ava++;
}
int main(void)
{
	freopen("blackbox.in","r",stdin);
	freopen("blackbox.out","w",stdout);
	int i,geti,addnum,getnum;
	scanf("%d %d",&addnum,&getnum);
	for (i=0;i<addnum;i++)
		scanf("%d",&add[i]);
	for (i=0;i<getnum;i++)
	{
		scanf("%d",&get[i]);
		get[i]--;
	}
	geti=0;
	for (i=0;i<addnum;i++)
	{
		insert(add[i]);
		while (get[geti]==i)
		{
			printf("%d\n",a[geti]);
			geti++;
		}
	}
	fclose(stdin);
	fclose(stdout);
	return(0);
}