Guest User

Untitled

a guest
May 23rd, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.20 KB | None | 0 0
  1. //package equalizeStones;
  2.  
  3. import java.util.*;
  4.  
  5. public class Stones {
  6.  
  7. public static void main(String[] args) {
  8.  
  9.  
  10. // String input = "5 67 54 16 55 40";
  11. //String input = "3 1 49 50";
  12. //String input = "6 19 18 10 19 4 12";
  13. // String input = "3 100 25 25";
  14. // String input = "4 100 25 25 25";
  15. //String input = "5 100 25 25 25 25";
  16. // String input = "6 100 25 25 25 25 25";
  17. String input = "4 5 14 16 25";
  18. // String input = "2 100 150";
  19. // String input = "2 100 100";
  20. // String input = "1 100";
  21. //String input = "11 200 1 5 300 70 1 199 299 50 600 75";
  22.  
  23. Scanner sc = new Scanner(input);
  24.  
  25. int size = sc.nextInt();
  26.  
  27. int[] weights = new int[size];
  28.  
  29. for (int i = 0; i < weights.length; i++) {
  30. weights[i] = sc.nextInt();
  31. }
  32.  
  33. sc.close();
  34.  
  35. System.out.println(getMinimalBalance(weights));
  36.  
  37. }
  38.  
  39. public static int getMinimalBalance (int[] weights){
  40.  
  41. int halfWeight = getSum (weights) / 2;
  42. int [][] sums = new int [weights.length - 1][];
  43. sums[0] = weights;
  44.  
  45. for (int i = 1; i < sums.length; i++){
  46. sums[i] = new int[sums[i-1].length - 1];
  47. for (int j = 0; j < sums[i].length; j++){
  48. System.out.printf("sums[%d][%<d]: %d, sums[%1$d][%d]: %d\n", i-1, sums[0][i-1], j+1, sums[i - 1][j+1]);
  49. // if (sums[i-1][i-1] + sums[i - 1][j + 1] <= halfWeight){
  50. sums[i][j] = sums[i - 1][i-1] + sums[i - 1][j + 1];
  51. // }
  52. }
  53. }
  54.  
  55. printAll(sums);
  56.  
  57. return getNearest(sums, halfWeight);
  58.  
  59. }
  60.  
  61. private static int getNearest (int[][] nums, int number){
  62.  
  63. int max = 0;
  64.  
  65. for (int [] s : nums){
  66. Arrays.sort(s);
  67. for (int i = s.length - 1; s[i] >= number; i--){
  68. if (s[i] > max){
  69. max = s[i];
  70. }
  71. }
  72. }
  73.  
  74. return max;
  75. }
  76.  
  77. private static int getSum(int[] nums) {
  78. int res = 0;
  79.  
  80. for (int i = nums.length - 1; i >= 0; i--) {
  81. res += nums[i];
  82. }
  83.  
  84. System.out.println("sum: " + res);
  85. return res;
  86. }
  87.  
  88. private static void printAll (int [][] ar){
  89. for (int [] subAr : ar){
  90. System.out.println(Arrays.toString(subAr));
  91. }
  92. }
  93.  
  94.  
  95. }
Add Comment
Please, Sign In to add comment