比赛 20120420 评测结果 AAAAWAWW
题目名称 等腰直角三角形 最终得分 62
用户昵称 201101 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2012-04-20 11:28:09
显示代码纯文本
/*
UID:cheepok
PID:triangle
*/

#include<stdio.h>
#include<stdlib.h>

typedef long long Int;

struct orz
{
	Int x,y;
}a[100001];

Int Q,n;

double ans;

int cmp(const void *a,const void *b)
{
	return (*(orz *)a).x-(*(orz *)b).x;
}

int main()
{
	freopen("triangle.in","r",stdin);
	freopen("triangle.out","w",stdout);
	Int i,x,y;
	scanf("%lld",&Q);
	while(Q--)
	{
		scanf("%lld",&n);
		ans=0;
		for(i=1;i<=n;i++)
		{
			scanf("%lld%lld",&x,&y);
			a[i].x=x-y;
			a[i].y=x+y;
		}
		qsort(a+1,n,sizeof(orz),cmp);
		a[0].x=a[0].y=-2000000000;
		for(i=1;i<=n;i++)
		{
			if(a[i].y<a[i-1].y)
			{
				a[i].y=a[i-1].y;
			}
			else if(a[i].x>=a[i-1].y)
			{
				ans+=double((a[i].y-a[i].x)*(a[i].y-a[i].x));
			}
			else
			{
				ans+=double((a[i].y-a[i].x)*(a[i].y-a[i].x));
				ans-=double((a[i-1].y-a[i].x)*(a[i-1].y-a[i].x));
			}
		}
		ans=ans/4.0;
		printf("%.2lf\n",ans);
	}
	return 0;
}