Guest User

CH15 Artiste

a guest
Jun 20th, 2011
960
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.util.SortedMap;
  5. import java.util.StringTokenizer;
  6. import java.util.TreeMap;
  7. import java.util.Map.Entry;
  8.  
  9. /*
  10.  * Tuenti Contest
  11.  * Challenge 15 - Artiste
  12.  * Author: Pedro Antonio Pardal Jimena
  13.  * Email: pardal@alu.uma.es
  14.  */
  15.  
  16. public class AlfonsoArtiste
  17. {
  18.     private static int[][] initCanvas( int width, int height )
  19.     {
  20.         int[][] canvas = new int[width][height];
  21.        
  22.         for ( int i = 0; i < width; i++ )
  23.         {
  24.             for ( int j = 0; j < height; j++ )
  25.             {
  26.                 canvas[i][j] = 1;
  27.             }
  28.         }
  29.        
  30.         return canvas;
  31.     }
  32.    
  33.     private static void drawRectangle( int[][] canvas, int xstart, int ystart, int xend, int yend, int color )
  34.     {
  35.         for ( int i = xstart; i < xend; i++ )
  36.         {
  37.             for ( int j = ystart; j < yend; j++ )
  38.             {
  39.                 canvas[i][j] = color;
  40.             }
  41.         }
  42.     }
  43.    
  44.     private static String countColors( int[][] canvas, int width, int height )
  45.     {
  46.         SortedMap<Integer, Integer> freqs = new TreeMap<Integer, Integer>();
  47.        
  48.         for ( int i = 0; i < width; i++ )
  49.         {
  50.             for ( int j = 0; j < height; j++ )
  51.             {
  52.                 int color = canvas[i][j];
  53.                
  54.                 if ( !freqs.containsKey( color ) )
  55.                     freqs.put( color, 1 );
  56.                 else
  57.                 {
  58.                     int freq = freqs.get( color );
  59.                     freqs.put( color, freq + 1 );
  60.                 }
  61.             }
  62.         }
  63.        
  64.         StringBuffer sb = new StringBuffer();
  65.        
  66.         for ( Entry<Integer,Integer> entry : freqs.entrySet() )
  67.         {
  68.             sb.append( entry.getKey() + " " + entry.getValue() + " " );
  69.         }
  70.        
  71.         return sb.toString().trim();
  72.     }
  73.    
  74.     public static void main( String[] args )
  75.     {
  76.         try
  77.         {
  78.             BufferedReader reader = new BufferedReader( new InputStreamReader( System.in ) );
  79.            
  80.             while ( reader.ready() )
  81.             {
  82.                 String line = reader.readLine();
  83.                
  84.                 StringTokenizer st = new StringTokenizer( line, " " );
  85.                
  86.                 int width = Integer.parseInt( st.nextToken() );
  87.                 int height = Integer.parseInt( st.nextToken() );
  88.                 int numberOfColors = Integer.parseInt( st.nextToken() );
  89.                
  90.                 int[][] canvas = initCanvas( width, height );
  91.                
  92.                 for ( int i = 0; i < numberOfColors; i++ )
  93.                 {
  94.                     int xstart = Integer.parseInt( st.nextToken() );
  95.                     int ystart = Integer.parseInt( st.nextToken() );
  96.                     int xend = Integer.parseInt( st.nextToken() );
  97.                     int yend = Integer.parseInt( st.nextToken() );
  98.                     int color = Integer.parseInt( st.nextToken() );
  99.                    
  100.                     drawRectangle( canvas, xstart, ystart, xend, yend, color );                
  101.                 }
  102.                
  103.                 String result = countColors( canvas, width, height );
  104.                
  105.                 System.out.println( result );
  106.             }
  107.         }
  108.         catch ( Exception e )
  109.         {
  110.             System.err.println( "Error en el formato de entrada." );
  111.             e.printStackTrace( System.err );
  112.         }
  113.     }
  114. }
RAW Paste Data