比赛 20120420 评测结果 AWAAWWWW
题目名称 等腰直角三角形 最终得分 37
用户昵称 kaaala 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2012-04-20 11:17:10
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>

using namespace std;

struct Node
{
	int l,r,h;
	Node(int _l=0,int _r=0,int _h=0):l(_l),r(_r),h(_h){}
}A[100010];

int N,Q;
double ans,del; 

bool operator <(Node a,Node b)
{
	return a.l<b.l||(a.l==b.l&&a.r>b.r);
}

int main()
{
	freopen("triangle.in","r",stdin);
	freopen("triangle.out","w",stdout);
	scanf("%d",&Q);
	while(Q--)
	{
		ans=0;
		del=0;
		scanf("%d",&N);
		for(int i=1;i<=N;i++)
		{
			int X,Y;
			scanf("%d%d",&X,&Y);
			A[i]=Node(X-Y,X+Y,Y);
			ans+=A[i].h*A[i].h;
		}
		if(N==1)
		{
			ans=(double)A[1].h*A[1].h;
			printf("%.2lf\n",ans);
			continue;
		}
		sort(A+1,A+N+1);
		int i=1,j=2;
		while(j<=N)
		{
			if(A[i].r<=A[j].l)
			{
				i=j;
				j++;
			}
			else if(A[i].l<A[j].l&&A[i].r<A[j].r)
			{
				del+=(A[i].r-A[j].l)/2.0*(A[i].r-A[j].l)/2.0;
				i=j;
				j++;
			}
			else if(A[i].l<=A[j].l&&A[i].r>=A[j].r)
			{
				del+=A[j].h*A[j].h;
				j++;
			}
		}	
		ans-=del;
		printf("%.2lf\n",ans);
	}
	return 0;
}