记录编号 31728 评测结果 AAAAAA
题目名称 [POJ 1442] 黑盒子 最终得分 100
用户昵称 Gravatarmagic 是否通过 通过
代码语言 C++ 运行时间 0.501 s
提交时间 2011-11-03 17:10:11 内存使用 0.72 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
	const int maxlong=30005;
	int add[maxlong],bb[maxlong];
	int next[maxlong];
	int get[maxlong];
	int m,n,k,total;
void insert(int x);
void insert(int x)
{
	int left=1,right=total,mid;
	if (x>bb[total])
	{
		total++;
		bb[total]=x;
		return;
	}
	while (left<right)
	{
		mid=(left+right)/2;
		if (bb[mid]<x)
		{
			left=mid+1;
		}
		else 
		{
			right=mid;
		}
	}
	total++;
	for (int i=total;i>=left+1;i--)
	{
		bb[i]=bb[i-1];
	}
	bb[left]=x;
}
void out();
void out()
{
	k++;
	printf("%d\n",bb[k]);
}
int main()
{
	freopen("blackbox.in","r",stdin);
	freopen("blackbox.out","w",stdout);
	scanf("%d%d",&m,&n);
	for (int i=1;i<=m;i++)
	{
		scanf("%d",&add[i]);
	}
	int ge;
	for (int i=1;i<=n;i++)
	{
		scanf("%d",&ge);
		get[ge]++;
	}
	k=0;
	total=0;
	bb[0]=20000005;
	for (int i=1;i<=m;i++)
	{
		insert(add[i]);
		/*for (int j=1;j<=total;j++)
		{
		printf("%d ",bb[j]);
		}printf("\n");*/
		if (get[i]!=0)
		{
			for (int j=1;j<=get[i];j++)
			{
				out();
			}
		}
	}
	return 0;
}