天天看點

【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]);
}