天天看点

【USACO2008】Gold Pearl Pairing

对于这道当年的金组题,第一反应解法:一个大根堆&一个小根堆,维护每一种颜色的珠子个数,每一次用大根堆顶元素和小根堆顶元素匹配并输出……事实上,曾经有许多大神用这种方法AC此题,代码长度 2000 B+!!!

事实上,正解的做法没有更水!!!

【USACO2008】Gold Pearl Pairing C++代码实现:

#include <cstdio>
int n,c,now,pearl[100001];
int main()
{
	scanf("%d%d",&n,&c);
	for(int x,i=1;i<=c;i++)
	{
		scanf("%d",&x);
		while(x--)
			pearl[++now]=i;
	}
	for(int i=1;i<=n/2;i++)
		printf("%d %d\n",pearl[i],pearl[i+n/2]);
}