比赛 |
防止浮躁的小练习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;
}