Source code for submission s638

Go to diff to previous submission

Main.java

  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5.  
  6. package folded;
  7.  
  8. import java.io.BufferedReader;
  9. import java.io.BufferedWriter;
  10. import java.io.IOException;
  11. import java.io.InputStreamReader;
  12. import java.io.OutputStreamWriter;
  13.  
  14. /**
  15.  *
  16.  * @author cteam028
  17.  */
  18. public class Main {
  19.  
  20. /**
  21.   * @param args the command line arguments
  22.   */
  23. public static void main(String[] args) throws Exception {
  24. try {
  25. Main fm = new Main();
  26. fm.init();
  27. //Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
  28. }
  29. }
  30.  
  31. public void init() throws IOException{
  32. String line;
  33.  
  34. while((line = br.readLine()) != null) {
  35. // String a[] = line.split(" ");
  36.  
  37. final int[] arr = new int[4];
  38. parseIntArr(line.toCharArray(), arr);
  39.  
  40. final int Ar = arr[0];
  41. final int Ac = arr[1];
  42. final int Tr = arr[2];
  43. final int Tc = arr[3];
  44.  
  45. // int Ar = Integer.parseInt(a[0]);
  46. // int Ac = Integer.parseInt(a[1]);
  47. // int Tr = Integer.parseInt(a[2]);
  48. // int Tc = Integer.parseInt(a[3]);
  49.  
  50. int pole[][][][] = new int[Tr][Tc][(Ar/Tr) + 2][(Ac/Tc) + 2];
  51.  
  52. int minPole[][] = new int[Tr][Tc];
  53.  
  54. for(int x=0; x < Ar; x++) {
  55. line = br.readLine();
  56. char[] text = line.toCharArray();
  57. for(int y=0; y < Ac; y++) {
  58. boolean inMap = (text[y] == 'X');
  59. if(inMap){
  60. for (int dx = 0; dx < Tr; dx++) {
  61. for (int dy = 0; dy < Tc; dy++) {
  62. if(pole[dx][dy][(x + dx)/Tr][(y + dy)/Tc] == 0){
  63. pole[dx][dy][(x + dx)/Tr][(y + dy)/Tc] = 1;
  64. minPole[dx][dy] ++;
  65. }
  66.  
  67. }
  68. }
  69. }
  70. }
  71. }
  72.  
  73. int min = Integer.MAX_VALUE;
  74.  
  75. for (int dx = 0; dx < Tr; dx++) {
  76. for (int dy = 0; dy < Tc; dy++) {
  77. /*int pocet = 0;
  78.   for (int idxx = 0; idxx < (Ar/Tr) + 2; idxx++) {
  79.   for (int idxy = 0; idxy < (Ac/Tc) + 2; idxy++) {
  80.   if(pole[dx][dy][idxx][idxy] == 1) pocet++;
  81.  
  82.   }
  83.   }*/
  84. min = Math.min(min, minPole[dx][dy]);
  85. }
  86. }
  87.  
  88. bw.append(Integer.valueOf(min).toString());
  89. bw.newLine();
  90.  
  91.  
  92. }
  93. bw.flush();
  94. }
  95.  
  96. public static void parseIntArr(char[] arr, int[] target)
  97. {
  98. int i = 0;
  99. int acc = -1;
  100.  
  101. for(char ch :arr)
  102. {
  103. if(ch == ' ')
  104. {
  105. if(acc!= -1)
  106. {
  107. target[i++] = acc;
  108. acc = -1;
  109. }
  110. }
  111. else if(acc == -1)
  112. acc = ch - '0';
  113. else
  114. acc = acc * 10 + (ch - '0');
  115. }
  116. if(acc != -1)
  117. target[i] = acc;
  118. }
  119.  
  120. }
  121.  

Diff to submission s606

Main.java

--- c5.s606.cteam028.fm.java.0.Main.java
+++ c5.s638.cteam028.fm.java.0.Main.java
@@ -7,6 +7,8 @@
 
 import java.io.BufferedReader;
+import java.io.BufferedWriter;
 import java.io.IOException;
 import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
 
 /**
@@ -30,4 +32,5 @@
     public void init() throws IOException{
         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
         String line;
         
@@ -50,4 +53,6 @@
             int pole[][][][] = new int[Tr][Tc][(Ar/Tr) + 2][(Ac/Tc) + 2];
             
+            int minPole[][] = new int[Tr][Tc];
+            
             for(int x=0; x < Ar; x++) {
                 line = br.readLine();
@@ -58,5 +63,9 @@
                         for (int dx = 0; dx < Tr; dx++) {
                             for (int dy = 0; dy < Tc; dy++) {
-                                pole[dx][dy][(x + dx)/Tr][(y + dy)/Tc] = 1;
+                                if(pole[dx][dy][(x + dx)/Tr][(y + dy)/Tc] == 0){
+                                    pole[dx][dy][(x + dx)/Tr][(y + dy)/Tc] = 1;
+                                    minPole[dx][dy] ++;
+                                }
+                                
                             }
                         }
@@ -69,5 +78,5 @@
             for (int dx = 0; dx < Tr; dx++) {
                 for (int dy = 0; dy < Tc; dy++) {
-                    int pocet = 0;
+                    /*int pocet = 0;
                     for (int idxx = 0; idxx < (Ar/Tr) + 2; idxx++) {
                         for (int idxy = 0; idxy < (Ac/Tc) + 2; idxy++) {
@@ -75,13 +84,15 @@
 
                         }
-                    }
-                    min = Math.min(min, pocet);
+                    }*/
+                    min = Math.min(min, minPole[dx][dy]);
                 }
             }
             
-            System.out.println(min);
+            bw.append(Integer.valueOf(min).toString());
+            bw.newLine();
             
             
         }
+        bw.flush();
     }