请求下载数据,求hack
#include<cstdio>
#include<algorithm>
#define N 1919810
using namespace std;
struct tri{
double x,y,h,s;
void init(){s=(h*h)*0.5;}
}t[N];
int n;
double ans=0,k=0;
bool isin(tri a,tri b){
if(b.x>=a.x&&b.x<=a.x+a.h&&b.y>=a.y&&b.y<=a.y+a.h)return 1;
return 0;
}
bool cm(double x,double y){
if(x-y>=0.000000001)return 1;
return 0;
}
bool isin2(tri a,double x,double y){
if(cm(x,a.x)&&cm(a.x+a.h,x)&&cm(y,a.y)&&cm(a.y+a.h,y)&&cm(a.h,x-a.x+y-a.y))return 1;
return 0;
}
signed main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
double a,b,c;
scanf("%lf%lf%lf",&a,&b,&c);
t[i]=(tri){a,b,c};
t[i].init();
k+=t[i].s;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i==j)continue;
bool flg=0;
if(isin2(t[i],t[j].x,t[j].y)){
flg=1;
ans+=min(t[j].s,(t[i].y+t[i].h-t[j].x+t[i].x-t[j].y)*(t[i].y+t[i].h-t[j].x+t[i].x-t[j].y)*0.5);
// printf("%d %d %.1lf\n",i,j,min(t[j].s,(t[i].y+t[i].h-t[j].x+t[i].x-t[j].y)*(t[i].y+t[i].h-t[j].x+t[i].x-t[j].y)*0.5));
}
if(isin2(t[i],t[j].x,t[j].y+t[j].h)&&!flg){
flg=1;
ans+=min(t[j].s,(t[j].y+t[j].h-t[i].y)*(t[j].y+t[j].h-t[i].y)*0.5);
// printf("%d %d %.1lf\n",i,j,min(t[j].s,(t[j].y+t[j].h-t[i].y)*(t[j].y+t[j].h-t[i].y)*0.5));
}
if(isin2(t[i],t[j].x+t[j].h,t[j].y)&&!flg){
ans+=min(t[j].s,(t[j].x+t[j].h-t[i].x)*(t[j].x+t[j].h-t[i].x)*0.5);
// printf("%d %d %.1lf\n",i,j,min(t[j].s,(t[j].x+t[j].h-t[i].x)*(t[j].x+t[j].h-t[i].x)*0.5));
}
}
}
// printf("%.1lf\n",ans);
printf("%.1lf",k-ans);
return 0;
}