#include <stdio.h>
#include <math.h>

#define NUM 50
#define SPEED 50.0
#define UP 1.0
#define DOWN 0.5

int main() 
{
	struct roof {
		float x, y;		// 屋顶坐标
		int p;			// 屋顶上的人数
	}roofs[NUM];

	int roof_num;		// 屋顶数 

	double totalTime = 0;		// 救援总时间
	int i;                      // 循环控制变量

	float x, y;
	int p;

	// 输入屋顶数
	printf("Please input roof_num:");
    scanf("%d", &roof_num);

	//用循环输入每一个屋顶的位置及人数
	for (i=0;i<roof_num;i++)
	{
		scanf("%f%f%d",&x, &y, &p); 
		roofs[i].x = x;
		roofs[i].y = y;
		roofs[i].p = p; 
	}

	//用循环处理每一个屋顶，计算救援时间
	for (i=0; i<roof_num; i++)
	{
		x = roofs[i].x;
		y = roofs[i].y;
		p = roofs[i].p;

		// 首先计算从大本营到屋顶的双程航行时间，并累加到总救援时间中
		totalTime += 2 * sqrt(x*x + y*y) / SPEED;

		// 然后计算被求人员上船和下船所耗费的总时间，并累加到总救援时间中
		totalTime += p * (UP + DOWN);
	}

	// 打印出救援总时间
	printf("Total Time is: %.2lf\n", totalTime);

	// 依次打印出各屋顶的位置及人数
	for (i=0; i<roof_num; i++)
	{
		printf("Roof ID: %d %.2f %.2f %d\n", i+1, roofs[i].x, roofs[i].y, roofs[i].p); 
	}

	return 0;
}