Advertisement
Guest User

CH11 GasStations

a guest
Jun 20th, 2011
1,458
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.13 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.util.LinkedList;
  5. import java.util.List;
  6.  
  7. /*
  8.  * Tuenti Contest
  9.  * Challenge 11 - Gas Stations
  10.  * Author: Pedro Antonio Pardal Jimena
  11.  */
  12.  
  13. public class GasStations
  14. {
  15.     private static String formateaLista( List<Integer> gasolineras )
  16.     {
  17.         if ( gasolineras.isEmpty() )
  18.         {
  19.             return "No stops";
  20.         }
  21.         else
  22.         {
  23.             StringBuffer sb = new StringBuffer();
  24.            
  25.             for ( int gasolinera : gasolineras )
  26.             {
  27.                 sb.append( gasolinera + " " );
  28.             }
  29.            
  30.             return sb.toString().trim();
  31.         }
  32.     }
  33.    
  34.     private static String calcularParadas( int maxkm, int disttotal, List<Integer> gasolineras )
  35.     {
  36.         List<Integer> visitadas = new LinkedList<Integer>();
  37.        
  38.         int autonomia = maxkm;
  39.        
  40.         for ( int i = 0; i < (gasolineras.size() - 1); i++ )
  41.         {
  42.             int actual = gasolineras.get( i );
  43.             int siguiente = gasolineras.get( i + 1 );
  44.            
  45.             int distancia = siguiente - actual;
  46.  
  47.             if ( distancia > autonomia )
  48.             {
  49.                 visitadas.add( actual );
  50.                 autonomia = maxkm - distancia;
  51.             }
  52.             else
  53.             {
  54.                 autonomia -= distancia;
  55.             }          
  56.         }
  57.        
  58.         return formateaLista( visitadas );
  59.     }
  60.    
  61.     public static void main( String[] args )
  62.     {
  63.         BufferedReader reader = new BufferedReader( new InputStreamReader( System.in ) );
  64.        
  65.         try
  66.         {
  67.             int ncasos = Integer.parseInt( reader.readLine().trim() );
  68.            
  69.             for ( int i = 0; i < ncasos; i++ )
  70.             {
  71.                 int maxkm = Integer.parseInt( reader.readLine().trim() );
  72.                 int disttotal = Integer.parseInt( reader.readLine().trim() );
  73.                
  74.                 reader.readLine(); // número de gasolineras
  75.                
  76.                 List<Integer> gasolineras = new LinkedList<Integer>();
  77.                
  78.                 gasolineras.add( 0 );
  79.                 for ( String s : reader.readLine().split( " " ) )
  80.                 {
  81.                     gasolineras.add( Integer.parseInt( s ) );
  82.                 }
  83.                 gasolineras.add( disttotal );
  84.                
  85.                 String resultado = calcularParadas( maxkm, disttotal, gasolineras );
  86.                
  87.                 System.out.println( resultado );
  88.             }
  89.         }
  90.         catch ( IOException e )
  91.         {
  92.             System.err.println( "Formato de la entrada incorrecto" );
  93.         }
  94.     }
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement