Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- __author__ = 'Keril'
- from utils import read_from_file
- import time
- start_time = time.time()
- def solve_orch(fpath):
- working_matrix = read_from_file(fpath)
- print("--- FILE READED: %s seconds" % (time.time() - start_time))
- tricky_array1 = []
- tricky_array2 = []
- tricky_array3 = []
- horiz_division_index_1 = 0
- vert_division_index_1 = 0
- vert_division_index_2 = 0
- temp = 0
- array_of_quad_sums = []
- tricky_array1.append(sum(working_matrix[0]))
- for i in range(1,len(working_matrix)):
- tricky_array1.append(tricky_array1[i-1]+sum(working_matrix[i]))
- mean_value = tricky_array1[len(working_matrix)-1]/2
- min_delta =abs(abs(tricky_array1[0])-abs(mean_value))
- for i in range(1,len(tricky_array1)):
- current_delta = tricky_array1[i]-mean_value
- if abs(current_delta)<=abs(min_delta):
- min_delta = current_delta
- horiz_division_index_1 = i
- print("--- A: %s seconds ---" % (time.time() - start_time))
- for i in range(0,len(working_matrix)):
- for j in range(0,horiz_division_index_1+1):
- temp += working_matrix[j][i]
- tricky_array2.append(temp)
- mean_value = tricky_array2[len(working_matrix)-1]/2
- print(mean_value)
- min_delta =abs(abs(tricky_array2[0])-abs(mean_value))
- for i in range(1,len(tricky_array2)):
- current_delta = tricky_array2[i]-mean_value
- if abs(current_delta)<=abs(min_delta):
- min_delta = current_delta
- vert_division_index_1 = i
- array_of_quad_sums.append(tricky_array2[vert_division_index_1])
- array_of_quad_sums.append(tricky_array2[len(working_matrix)-1]-tricky_array2[vert_division_index_1])
- print("--- B: %s seconds ---" % (time.time() - start_time))
- if horiz_division_index_1+1==len(working_matrix):
- temp = 0
- lindex = len(working_matrix)
- for i in range(0,len(working_matrix)):
- temp += working_matrix[lindex-1][i]
- tricky_array3.append(temp)
- else:
- for i in range(0,len(working_matrix)):
- temp = 0
- for j in range(horiz_division_index_1+1,len(working_matrix)):
- temp += working_matrix[j][i]
- tricky_array3.append(temp)
- mean_value = tricky_array3[len(working_matrix)-1]/2
- print(mean_value)
- min_delta =abs(abs(tricky_array3[0])-abs(mean_value))
- for i in range(1,len(tricky_array3)):
- current_delta = tricky_array3[i]-mean_value
- if abs(current_delta)<=abs(min_delta):
- min_delta = current_delta
- vert_division_index_2 = i
- array_of_quad_sums.append(tricky_array3[vert_division_index_2])
- array_of_quad_sums.append(tricky_array3[len(working_matrix)-1]-tricky_array3[vert_division_index_2])
- print("--- C: %s seconds ---" % (time.time() - start_time))
- result = abs(max(array_of_quad_sums))-abs(min(array_of_quad_sums))
- # print(tricky_array1)
- # print(tricky_array2)
- # print(tricky_array3)
- # print(array_of_quad_sums)
- # print(vert_division_index_2)
- # print(vert_division_index_1)
- # print(horiz_division_index_1)
- return result
- # print(read_from_file('pub04.in'))
- print(solve_orch('pub04.in'))
- print("--- %s seconds ---" % (time.time() - start_time))
Advertisement
Add Comment
Please, Sign In to add comment