比赛 防止浮躁的小练习v0.3 评测结果 AAAAAAAAAA
题目名称 YL杯超级篮球赛 最终得分 100
用户昵称 Mealy 运行时间 0.113 s
代码语言 C++ 内存使用 1.08 MiB
提交时间 2016-10-12 19:24:43
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
const int nmax=50086;
typedef long long ll;
int n;
int sum=0;
class point
{
public:
	int x,y;
	int val;
	int num;
}poi[nmax];
bool cmpx(point a,point b)
{
	return a.x<b.x;
}
bool cmpy(point a,point b)
{
	return a.y<b.y;
}
void PreDo()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&poi[i].val);
		poi[i].num=i;
		sum+=poi[i].val;
	}
	for(int i=1;i<=n;i++)
		scanf("%d%d",&poi[i].x,&poi[i].y);
	sort(poi+1,poi+n+1,cmpx);
	int tmp=0;
	int ansx;
	for(int i=1;i<=n;i++)
	{
		tmp+=poi[i].val;
		if((tmp<<1)>=sum)
		{
			ansx=poi[i].x;
			break;
		}
		
	}
	tmp=0;
	sort(poi+1,poi+n+1,cmpy);
	int ansy;
	for(int i=1;i<=n;i++)
	{
		tmp+=poi[i].val;
		if((tmp<<1)>=sum)
		{
			ansy=poi[i].y;
			break;
		}
	}
	ll ans=0;
	for(int i=1;i<=n;i++)
	{
		ans+=poi[i].val*(abs(poi[i].x-ansx)+abs(poi[i].y-ansy));
	}
	printf("%lld.00",ans);
}
int main()
{
	freopen("ballc.in","r",stdin);
	freopen("ballc.out","w",stdout);
	PreDo();
	return 0;
}