记录编号 7161 评测结果 ERWRAEEEEE
题目名称 [NOIP 2006]明明的随机数 最终得分 10
用户昵称 GravatarBYVoid 是否通过 未通过
代码语言 C++ 运行时间 0.038 s
提交时间 2008-11-06 21:28:44 内存使用 0.13 MiB
显示代码纯文本
#include <iostream>

using namespace std;

const int INF=0x7FFFFFFF;

template <typename T,int MAX,int OV> class tHeap
{
	public:
		T heap[MAX];
		int Size;
		tHeap()
		{
			Size=0;
			heap[0]=OV;
		}
		void ins(T p)
		{
			int k=++Size,f;
			f=k/2;
			while (heap[f] > p )
			{
				heap[k]=heap[f];
				k=f;
				f=k/2;
			}
			heap[k]=p;
		}
		T del()
		{
			T v=heap[1];
			int k=1,child;
			child=k*2;
			while (child<=Size)
			{
				if (child+1<=Size && heap[child+1]<heap[child])
					child++;
				if (heap[child] < heap[Size])
				{
					heap[k]=heap[child];
					k=child;
					child=k*2;
				}
				else
					break;
			}
			heap[k]=heap[Size--];
			return v;
		}
};

tHeap<int,101,-INF> H;

int S[101];

void random_s()
{
	int i,N,last=-INF,k,cnt=0,a;
	freopen("random.in","r",stdin);
	freopen("random.out","w",stdout);
	scanf("%d",&N);
	for (i=1;i<=N;i++)
	{
		scanf("%d",&a);
		H.ins(a);
	}
	for (i=1;i<=N;i++)
	{
		k=H.del();
		if (k!=last)
		{
			last=k;
			S[++cnt]=k;
		}
	}
	printf("%d\n",cnt);
	for (i=1;i<=cnt;i++)
		printf("%d ",S[i]);
}

int main()
{
	random_s();
	return 0;
}