比赛 |
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;
}