Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Способ 1:
- def merge_sort(array):
- if len(array) == 1:
- return array
- left = merge_sort(array[:len(array) // 2])
- right = merge_sort(array[len(array) // 2:])
- result = []
- l, r = 0, 0
- while l < len(left) and r < len(right):
- if left[l] <= right[r]:
- result.append(left[l])
- l += 1
- else:
- result.append(right[r])
- r += 1
- while l < len(left):
- result.append(left[l])
- l += 1
- while r < len(right):
- result.append(right[r])
- r += 1
- return result
- n = int(input())
- flowerbeds = []
- for i in range(n):
- flowerbed = list(map(int, input().split()))
- flowerbeds.append(flowerbed)
- flowerbeds = merge_sort(flowerbeds)
- i_start = 0
- i_end = 1
- start = flowerbeds[0][i_start]
- end = flowerbeds[0][i_end]
- for i in range(n):
- if flowerbeds[i][i_start] >= start and flowerbeds[i][i_end] <= end:
- # start--------------------------end
- # i_start----------i_end
- continue
- if flowerbeds[i][i_start] <= end:
- # start-------end
- # i_start----------i_end
- end = flowerbeds[i][i_end]
- else:
- # start----end
- # i_start----i_end
- print(start, end)
- start = flowerbeds[i][i_start]
- end = flowerbeds[i][i_end]
- print(start, end)
- --------------------------------------------------------------------------------------------------------------------------------
- Способ 2:
- def merge_sort(array):
- if len(array) == 1:
- return array
- left = merge_sort(array[:len(array) // 2])
- right = merge_sort(array[len(array) // 2:])
- result = []
- l, r = 0, 0
- while l < len(left) and r < len(right):
- if left[l] <= right[r]:
- result.append(left[l])
- l += 1
- else:
- result.append(right[r])
- r += 1
- while l < len(left):
- result.append(left[l])
- l += 1
- while r < len(right):
- result.append(right[r])
- r += 1
- return result
- n = int(input())
- flowerbeds_starts = []
- flowerbeds_ends = []
- for pos in range(n):
- flowerbed = input().split()
- flowerbeds_starts.append(int(flowerbed[0]))
- flowerbeds_ends.append(int(flowerbed[1]))
- flowerbeds_starts = merge_sort(flowerbeds_starts)
- flowerbeds_ends = merge_sort(flowerbeds_ends)
- start = flowerbeds_starts[0]
- end = flowerbeds_ends[0]
- for pos in range(1, n):
- if flowerbeds_ends[pos - 1] >= end:
- end = flowerbeds_ends[pos - 1]
- if flowerbeds_starts[pos] > flowerbeds_ends[pos - 1]:
- print(start, end)
- start = flowerbeds_starts[pos]
- end = flowerbeds_ends[pos]
- end = flowerbeds_ends[n - 1]
- print(start, end)
Advertisement
Add Comment
Please, Sign In to add comment