GoogleCodeJam 2009 Round 1C B. Center of Mass

ホタルの初期位置と移動速度の平均が重心の初期位置と移動速度になる。
時刻tでの重心の距離を求めて、微分が0になるtがtmin。
ただし、重心が移動しない場合と、tminが負となる場合にはtmin=0。

T = input()
for t in range(T):
    
    v = [0.0]*6
    N = input()
    for n in range(N):
        tmp = [int(x) for x in raw_input().split()]
        for i in range(6):
            v[i] += tmp[i]
    
    x,y,z,vx,vy,vz = [i/N for i in v]
    
    if (vx,vy,vz) == (0,0,0):
        tmin = 0
        dmin = (x**2+y**2+z**2)**0.5
    else:
        tmin = max(-(x*vx+y*vy+z*vz)/(vx**2+vy**2+vz**2),0)
        dmin = ((x+tmin*vx)**2+(y+tmin*vy)**2+(z+tmin*vz)**2)**0.5
    
    print "Case #%d: %s %s" % (t+1,dmin,tmin)