比赛 20111021 评测结果 AAAATT
题目名称 黑盒子 最终得分 66
用户昵称 Makazeu 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2011-10-21 21:18:27
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cstdlib> 
using namespace std;	

class data
{
public:
	int key;
	int sen;//前驱
	int next;//后继
};
data A[100000];
int top=0;//链表中元素的个数
int I=0;

void Insert(int key)
{
	int point=0;
	while (key>A[point].key)
	{
		point=A[point].next;
	}
	//Create a new node
	A[top].key=key;
	A[top].next=point;
	A[top].sen=A[point].sen;
	
	A[point].sen=top;//后继的前驱等于自己
	
	A[A[top].sen].next=top;//前驱的后继等于自己
	
	top++;
}


void print()
{
	int point=A[0].next; 
	while(A[point].next!=-1)
	{
		cout<<A[point].key<<endl;
		point=A[point].next;
	}
}

int M,N;
int MM[300001];
int NN[300001];

void init()
{
	A[0].key=-2000001;A[0].next=1;A[0].sen=-1;
	A[1].key=2000001;A[1].next=-1;A[0].sen=0;
	top=2;
	cin>>M>>N;
	for (int i=1;i<=M;i++)
		cin>>MM[i];
	for (int j=1;j<=N;j++)
		cin>>NN[j];
}

void GET()
{
	int t=0;
	int point=A[0].next; 
	while(A[point].next!=-1)
	{
		if (t==I)
		{
			cout<<A[point].key<<endl;
			I++;
			return;
		}
		t++;
		point=A[point].next;
	}
}

void work()
{
	int n=1;
	for (int m=1;m<=M;m++)
	{
		Insert(MM[m]);
		int j=n;
		while(j<=N)
		{
			if (NN[j]==m)
			{
				GET();
				j++;
				n++;
				while (NN[j]==NN[j-1]&&j<=N)
				{
					GET();
					j++;
					n++;
				}	
				break;
			}
			j++;
		}
	}
}

int main()
{
	freopen("blackbox.in","r",stdin);
	freopen("blackbox.out","w",stdout);
	init();
	work();
	//cout<<endl<<endl;
	//print();
	return 0;
}