Friday, 15 November 2013

UVA Problem ID 10281 (Average Speed)

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);
     }
}

Previous Post
Next Post

0 comments:

Advertisement