Advertisement
Guest User

CH5 Milkman

a guest
Jun 20th, 2011
1,484
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.90 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.InputStreamReader;
  3. import java.io.IOException;
  4. import java.util.StringTokenizer;
  5.  
  6. /*
  7.  * Tuenti Contest
  8.  * Challenge 5 - Milkman
  9.  * Author: Pedro Antonio Pardal Jimena
  10.  */
  11.  
  12. public class Milkman
  13. {  
  14.     private static int[] parseNumberList( String s, int n )
  15.     {
  16.         int[] result = new int[n];
  17.        
  18.         StringTokenizer st = new StringTokenizer( s, "," );
  19.        
  20.         for ( int i = 0; i < n; i++ )
  21.         {
  22.             result[i] = Integer.parseInt( st.nextToken() );
  23.         }
  24.        
  25.         return result;
  26.     }
  27.    
  28.     private static int[][] calcularTabla( int n, int w, int[] pesos, int[] litros )
  29.     {
  30.         int[][] tabla = new int[n+1][w+1];
  31.        
  32.         for ( int i = 0; i <= n; i++ )
  33.             tabla[i][0] = 0;
  34.        
  35.         for ( int j = 0; j <= w; j++ )
  36.             tabla[0][j] = 0;
  37.        
  38.         for ( int i = 1; i <= n; i++ )
  39.         {
  40.             for ( int j = 1; j <= w; j++ )
  41.             {
  42.                 if ( pesos[i-1] > j )
  43.                 {  
  44.                     tabla[i][j] = tabla[i-1][j];
  45.                 }
  46.                 else
  47.                 {  
  48.                     if ( tabla[i-1][j] > litros[i-1] + tabla[i-1][j - pesos[i-1]] )
  49.                         tabla[i][j] = tabla[i-1][j];
  50.                     else
  51.                         tabla[i][j] = tabla[i-1][j - pesos[i-1]] + litros[i-1];
  52.                 }
  53.             }
  54.         }
  55.        
  56.         return tabla;
  57.     }
  58.    
  59.     private static int parseInput( String linea )
  60.     {
  61.         StringTokenizer st = new StringTokenizer( linea, " " );
  62.        
  63.         int n = Integer.parseInt( st.nextToken() );
  64.         int w = Integer.parseInt( st.nextToken() );
  65.        
  66.         int[] pesos = parseNumberList( st.nextToken(), n );
  67.         int[] litros = parseNumberList( st.nextToken(), n );
  68.        
  69.         int[][] tabla = calcularTabla( n, w, pesos, litros );
  70.        
  71.         return tabla[n][w];
  72.     }
  73.    
  74.     public static void main( String[] args ) throws IOException
  75.     {
  76.         BufferedReader reader = new BufferedReader( new InputStreamReader( System.in ) );
  77.        
  78.         while ( reader.ready() )
  79.         {
  80.             String linea = reader.readLine();
  81.             int result = parseInput( linea );
  82.            
  83.             System.out.println( result );
  84.         }
  85.     }
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement