Note :- it's not necessary to have a "speed" input at the end of the first line
and if that’s the case we have to print distance 0.00 km (distance must be printed for every query.)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.DecimalFormat;
public class Main {
public static void main(String[] args) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input;
StringBuffer sb=new StringBuffer("");
String lasttime="";
double distance=0;
double lastspeed=0;
int t=0;
while((input=br.readLine())!=null)
{
String s[]=input.split(" ");
if(s.length==1)
{
if(lasttime!="")
{
String s1[]=s[0].split(":");
double time1=Double.parseDouble(s1[0])+Double.parseDouble(s1[1])/60+Double.parseDouble(s1[2])/3600;
String s2[]=lasttime.split(":");
double time2=Double.parseDouble(s2[0])+Double.parseDouble(s2[1])/60+Double.parseDouble(s2[2])/3600;
//calculate timediff=s[0]-lasttime;
//distance1=distance+lastspeed*timediff;
//sop (s[0]+" "+distance1+" km");
double timediff=time1-time2;
double distance1=distance+lastspeed*timediff;
DecimalFormat df = new DecimalFormat("0.00");
sb.append(s[0]+" "+df.format(distance1)+" km");
sb.append("\n");
}
else
{
sb.append(s[0]+" 0.00 km");
sb.append("\n");
}
}
else
{
if(t==0)
{
t++;
lasttime=s[0];
lastspeed=Double.parseDouble(s[1]);
}
else
{
String s1[]=s[0].split(":");
double time1=Double.parseDouble(s1[0])+Double.parseDouble(s1[1])/60+Double.parseDouble(s1[2])/3600;
String s2[]=lasttime.split(":");
double time2=Double.parseDouble(s2[0])+Double.parseDouble(s2[1])/60+Double.parseDouble(s2[2])/3600;
double timediff=time1-time2;
distance=distance+lastspeed*timediff;
//calculate timediff=s[0]-lasttime;
//distance=lastspeed*timediff;
lasttime=s[0];
lastspeed=Double.parseDouble(s[1]);
}
}
}
System.out.print(sb);
}
}


