记录编号 33008 评测结果 AAAAAAAAAA
题目名称 [HAOI 2009]巧克力 最终得分 100
用户昵称 GravatarTruth.Cirno 是否通过 通过
代码语言 C++ 运行时间 0.013 s
提交时间 2011-11-09 07:43:38 内存使用 0.34 MiB
显示代码纯文本
#include <cstdio>
#include <cstdlib>
using namespace std;

int vx[10002]={0},vy[10002]={0};

void swap(int &x,int &y)
{
	int temp;
	temp=x;
	x=y;
	y=temp;
}

void qqsort(int* num,int l,int r)
{
	int ll,rr,temp;
	ll=l;
	rr=r;
	temp=num[rand()%(r-l+1)+l];
	while (ll<=rr)
	{
		while (num[ll]>temp)
			ll++;
		while (temp>num[rr])
			rr--;
		if (ll<=rr)
		{
			swap(num[ll],num[rr]);
			ll++;
			rr--;
		}
	}
	if (l<rr)
		qqsort(num,l,rr);
	if (ll<r)
		qqsort(num,ll,r);
}

int main(void)
{
	freopen("chocolate.in","r",stdin);
	freopen("chocolate.out","w",stdout);
	int i,n,m,numx=1,numy=1;
	long long total=0;
	scanf("%d %d\n",&n,&m);
	for (i=1;i<=n-1;i++)
		scanf("%d\n",&vx[i]);
	qqsort(vx,1,n-1);
	for (i=1;i<=m-1;i++)
		scanf("%d\n",&vy[i]);
	qqsort(vy,1,m-1);
	for (i=1;i<=n+m-2;i++)
	{
		if (vx[numx]>vy[numy])
		{
			total+=vx[numx]*numy;
			numx++;
		}
		else// if (vx[numx]>=vy[numy])
		{
			total+=vy[numy]*numx;
			numy++;
		}
	}
	printf("%d\n",total);
	fclose(stdin);
	fclose(stdout);
	return(0);
}