#P2254. Globetrotter

    ID: 1255 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>计算几何模拟其他数学字符串Ulm Local 1997

Globetrotter

描述

作为ACM编程团队的一员,你将频繁地穿梭于世界各地:苏黎世、费城、圣何塞、亚特兰大……从1999年开始,总决赛每年都会在不同的洲举行,因此某一天你可能会去到日本或澳大利亚。

在比赛现场,了解你距离家乡有多远会是一件有趣的事情。为此,你的任务是编写一个程序,计算地球表面上两个给定位置之间的地理距离。

我们假设地球是一个完美的球体,半径为63786378公里。A和B之间的地理距离是连接A和B的测地线线段的长度。

测地线线段是球体表面上两点之间最短的曲线,完全位于球体表面。

圆周率π\pi的值约为3.1415926535897933.141592653589793

输入

输入由两部分组成:城市列表和查询列表。

城市列表

  • 城市列表最多包含100100行,每行代表一个城市。
  • 每行包含一个字符串cic_i和两个实数latilat_ilongilong_i,分别表示城市名称、纬度和经度。
  • 城市名称长度不超过3030个字符,且不包含空格。
  • 纬度范围在90-90(南极)到+90+90(北极)之间。
  • 经度范围在180-180+180+180之间,负数表示本初子午线以西,正数表示本初子午线以东(本初子午线穿过英国伦敦的格林尼治)。
  • 城市列表以单独的一行#结束。

查询列表

  • 每行包含两个城市名称AABB
  • 查询列表以一行# #结束。

输出

对于每个查询:

  1. 输出一行A - B,其中AABB替换为实际的城市名称。
  2. 如果某个城市未出现在城市列表中,则输出Unknown
  3. 否则,输出一行x km,其中xx是两个城市之间的地理距离(单位为公里),四舍五入到最近的整数。
  4. 每个查询结束后输出一个空行。

输入样例 1

Ulm        48.700   10.500  
Freiburg        47.700   9.500  
Philadelphia    39.883   -75.250  
SanJose        37.366   -121.933  
NorthPole        90      0  
SouthPole        -90     0  
#  
Ulm Philadelphia  
Ulm SanJose  
Freiburg Philadelphia  
Freiburg SanJose  
Ulm Freiburg  
SanJose Philadelphia  
Ulm LasVegas  
Ulm Ulm  
Ulm NorthPole  
Ulm SouthPole  
NorthPole SouthPole  
# #  

输出样例 1

Ulm - Philadelphia  
6536 km  

Ulm - SanJose  
9367 km  

Freiburg - Philadelphia  
6519 km  

Freiburg - SanJose  
9412 km  

Ulm - Freiburg  
134 km  

SanJose - Philadelphia  
4023 km  

Ulm - LasVegas  
Unknown  

Ulm - Ulm  
0 km  

Ulm - NorthPole  
4597 km  

Ulm - SouthPole  
15440 km  

NorthPole - SouthPole  
20037 km  

来源
Ulm Local 1997