记录编号 29618 评测结果 AAAAAA
题目名称 [POJ 1442] 黑盒子 最终得分 100
用户昵称 GravatarTBK 是否通过 通过
代码语言 C++ 运行时间 0.574 s
提交时间 2011-10-25 09:29:17 内存使用 0.61 MiB
显示代码纯文本
#include <iostream>   
#include <cstdio>
using namespace std;
int a[30000],b,c,d,l,m,n,s=1,t,test,r[30001]={0},x[30000],y=0;
void add(int p,int q)
{
	if (p==q)
	{
		if (a[s]>x[p])
		{
			test=a[s];
			y++;
			for (n=p+1;n<=y;n++)
			{
				t=x[n];
				x[n]=test;
				test=t;
			}
		}
			else 
			{
				test=x[p];
				x[p]=a[s];
				y++;
				for (n=p+1;n<=y;n++)
				{
					t=x[n];
					x[n]=test;
					test=t;
				}
			}
	}
		else 
		{
			if (a[s]>x[p]) 
			{
				if ((double)(p+q)/2==(p+q)/2) add((p+q)/2,q);
					else add((p+q)/2+1,q);
			}
				else add(p/2,p);
		}
}
int main(void)   
{   
    freopen ("blackbox.in","r",stdin);   
    freopen ("blackbox.out","w",stdout);   
    scanf("%d %d",&b,&c);
	for (d=0;d<b;d++) scanf("%d",&a[d]);
	for (d=1;d<=c;d++) scanf("%d",&r[d]);
	if (r[c]<b) b=r[c];
	x[0]=a[0];
	r[0]=1;
	for (d=1;d<=c;d++)
	{
		for (l=0;l<r[d]-r[d-1];l++) 
		{
			add(0,y);
			s++;
		}
		printf("%d\n",x[d-1]);
	}
    fclose(stdin);   
    fclose(stdout);  
    return 0;   
}