gmo61520

Untitled

Mar 8th, 2016
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.28 KB | None | 0 0
  1. __author__ = 'Keril'
  2. from utils import read_from_file
  3. import time
  4. start_time = time.time()
  5.  
  6.  
  7. def solve_orch(fpath):
  8. working_matrix = read_from_file(fpath)
  9.  
  10. print("--- FILE READED: %s seconds" % (time.time() - start_time))
  11.  
  12. tricky_array1 = []
  13. tricky_array2 = []
  14. tricky_array3 = []
  15. horiz_division_index_1 = 0
  16. vert_division_index_1 = 0
  17. vert_division_index_2 = 0
  18. temp = 0
  19. array_of_quad_sums = []
  20.  
  21. tricky_array1.append(sum(working_matrix[0]))
  22. for i in range(1,len(working_matrix)):
  23. tricky_array1.append(tricky_array1[i-1]+sum(working_matrix[i]))
  24. mean_value = tricky_array1[len(working_matrix)-1]/2
  25. min_delta =abs(abs(tricky_array1[0])-abs(mean_value))
  26. for i in range(1,len(tricky_array1)):
  27. current_delta = tricky_array1[i]-mean_value
  28. if abs(current_delta)<=abs(min_delta):
  29. min_delta = current_delta
  30. horiz_division_index_1 = i
  31.  
  32. print("--- A: %s seconds ---" % (time.time() - start_time))
  33.  
  34. for i in range(0,len(working_matrix)):
  35. for j in range(0,horiz_division_index_1+1):
  36. temp += working_matrix[j][i]
  37. tricky_array2.append(temp)
  38. mean_value = tricky_array2[len(working_matrix)-1]/2
  39. print(mean_value)
  40. min_delta =abs(abs(tricky_array2[0])-abs(mean_value))
  41. for i in range(1,len(tricky_array2)):
  42. current_delta = tricky_array2[i]-mean_value
  43. if abs(current_delta)<=abs(min_delta):
  44. min_delta = current_delta
  45. vert_division_index_1 = i
  46. array_of_quad_sums.append(tricky_array2[vert_division_index_1])
  47. array_of_quad_sums.append(tricky_array2[len(working_matrix)-1]-tricky_array2[vert_division_index_1])
  48.  
  49. print("--- B: %s seconds ---" % (time.time() - start_time))
  50.  
  51. if horiz_division_index_1+1==len(working_matrix):
  52. temp = 0
  53. lindex = len(working_matrix)
  54. for i in range(0,len(working_matrix)):
  55. temp += working_matrix[lindex-1][i]
  56. tricky_array3.append(temp)
  57. else:
  58. for i in range(0,len(working_matrix)):
  59. temp = 0
  60. for j in range(horiz_division_index_1+1,len(working_matrix)):
  61. temp += working_matrix[j][i]
  62. tricky_array3.append(temp)
  63. mean_value = tricky_array3[len(working_matrix)-1]/2
  64. print(mean_value)
  65. min_delta =abs(abs(tricky_array3[0])-abs(mean_value))
  66. for i in range(1,len(tricky_array3)):
  67. current_delta = tricky_array3[i]-mean_value
  68. if abs(current_delta)<=abs(min_delta):
  69. min_delta = current_delta
  70. vert_division_index_2 = i
  71. array_of_quad_sums.append(tricky_array3[vert_division_index_2])
  72. array_of_quad_sums.append(tricky_array3[len(working_matrix)-1]-tricky_array3[vert_division_index_2])
  73.  
  74. print("--- C: %s seconds ---" % (time.time() - start_time))
  75.  
  76. result = abs(max(array_of_quad_sums))-abs(min(array_of_quad_sums))
  77. # print(tricky_array1)
  78. # print(tricky_array2)
  79. # print(tricky_array3)
  80. # print(array_of_quad_sums)
  81. # print(vert_division_index_2)
  82. # print(vert_division_index_1)
  83. # print(horiz_division_index_1)
  84. return result
  85.  
  86. # print(read_from_file('pub04.in'))
  87. print(solve_orch('pub04.in'))
  88. print("--- %s seconds ---" % (time.time() - start_time))
Advertisement
Add Comment
Please, Sign In to add comment