fork download
  1. import java.util.Scanner;
  2.  
  3. public class Main {
  4.  
  5. public static void main(String[] args) {
  6. Scanner sc = new Scanner(System.in);
  7. int t = sc.nextInt();
  8. for(t=t;t>0;t--){
  9. int n = sc.nextInt();
  10. int m = sc.nextInt();
  11. int k = sc.nextInt();
  12. char [][] array= new char[n][m] ;
  13. int []tracker=new int[n];
  14. int []trackerl=new int[n];
  15. int i,j;
  16. for(i = 0; i < n; i++)
  17. {
  18.  
  19. String temp = sc.next();
  20. for(j = 0; j < m; j++)
  21. {
  22. array[i][j] = (temp.charAt(j));
  23. }
  24.  
  25. }
  26.  
  27. int light=0,diamond=0;
  28.  
  29. for(i=0;i<n;i++){
  30. for(j=0;j<m;j++){
  31. if(array[i][j]=='*')
  32. {diamond++;}
  33.  
  34. }
  35. tracker[i]=diamond;
  36. diamond=0;
  37. }
  38.  
  39.  
  40. int a, b;
  41. int temp;
  42. int sortTheNumbers = n;
  43.  
  44. for (a = 1; a < sortTheNumbers; a++) {
  45. for (b = 0; b < sortTheNumbers-a; b++) {
  46. if (tracker[b] > tracker[b + 1]) {
  47. temp = tracker[b];
  48. tracker[b] = tracker[b + 1];
  49. tracker[b + 1] = temp;
  50. }
  51. }
  52. }
  53.  
  54. for(i=0;i<n;i++)
  55. trackerl[i]=m-tracker[i];
  56.  
  57.  
  58. int br=0;
  59. try{
  60. if(m%2==0)
  61. {
  62. for(i=0;i<=n-1;i++)
  63. if(tracker[i]>(m)/2)
  64. br++;
  65. }
  66. if(m%2!=0)
  67. {
  68. for(i=0;i<=n-1;i++)
  69. if(tracker[i]>=(m+1)/2)
  70. br++;
  71. }}catch(Exception e){}
  72.  
  73. int ans=0;
  74. try{
  75. if(br>=k)
  76. {
  77. for(i=n-1;i>(n-1-k);i--)
  78. ans+=tracker[i];
  79.  
  80. for(i=(n-1-k);i>=0;i--)
  81. ans+=trackerl[i];
  82.  
  83. }
  84.  
  85.  
  86. if(br<k)
  87. {
  88. if(br!=0 && br!=n)
  89. {for(i=n-1;i>(n-br);i--)
  90. {ans+=tracker[i];k--;}
  91.  
  92. int pass1=0,pass2=0;
  93. if(k%2==0)
  94. pass1=Math.max(tracker[(n-br)]+tracker[(n-br-1)],trackerl[(n-br)]+trackerl[(n-br-1)]);
  95. if(k%2!=0)
  96. pass2=Math.max(tracker[(n-br)]+trackerl[(n-br-1)],trackerl[(n-br)]+tracker[(n-br-1)]);//System.out.print("Hp"+tracker[(n-br)]);}
  97.  
  98. ans+=Math.max(pass1, pass2);
  99. for(i=(n-2-br);i>=0;i--)
  100. ans+=trackerl[i];}
  101. if(br!=0 && br==n)
  102. {
  103. for(i=n-1;i>(n-br);i--)
  104. {ans+=tracker[i];k--;}
  105. if(k%2!=0){ans+=tracker[(n-br)];}
  106. if(k%2==0){ans+=trackerl[(n-br)];}
  107. for(i=(n-1-br);i>=0;i--)
  108. { ans+=trackerl[i];}
  109.  
  110. }
  111. if(br==0)
  112. {
  113. if(k%2!=0){ans+=tracker[(n-1)];}
  114. if(k%2==0){ans+=trackerl[(n-1)];}
  115. for(i=(n-2);i>=0;i--)
  116. { ans+=trackerl[i];}
  117. }
  118.  
  119. }}catch(Exception e){}
  120.  
  121.  
  122.  
  123. System.out.println(""+ans);
  124.  
  125.  
  126. }
  127.  
  128.  
  129.  
  130.  
  131. }
  132.  
  133. }
Success #stdin #stdout 0.06s 246144KB
stdin
24
4	2	6
..
**
.*
*.
6	2	4
*.
..
**
.*
..
..
2	5	7
..***
***..
4	5	4
.....
.....
.....
***.. 
1	5	4
..***
1	1	4
* 
1	1	2
* 
2 2 2
..
.. 
2 2 1
..
..
3	4	5
..**
***.
...* 
4 4 1
****
****
****
****
3 3 1
*..
*..
*..
3 3 1
***
***
***
3 2 3
**
.*
*.
3 2 100
**
.*
*.
7	7	6
.......
*******
*******
*******
*******
*******
*******
10	10	100
..........
**********
**********
**********
**********
**********
**********
**********
**********
**********
6	3	5
...
***
..*
**.
.*.
*.*
5	4	3
...*
**..
***.
****
....
7	4	2
....
*.*.
***.
****
*.**
****
.**.
10	4	7
..**
*.*.
****
....
...*
*..*
*.*.
..*.
****
...*
13	9	17
..**..***
.........
***..*.*.
**...*...
*..*.*...
*..*..***
******...
*****..**
*.......*
*...*****
*********
.........
**.......
7	7	11
*******
******.
****...
**.....
**.....
*......
.......
4	5	13
****.
***..
***..
***..
stdout
6
10
5
17
2
0
0
4
2
8
4
5
3
4
4
49
90
14
16
18
29
87
40
12