giGii

3_N

Mar 18th, 2022
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.77 KB | None | 0 0
  1. Способ 1:
  2.  
  3. def merge_sort(array):
  4.     if len(array) == 1:
  5.         return array
  6.  
  7.     left = merge_sort(array[:len(array) // 2])
  8.     right = merge_sort(array[len(array) // 2:])
  9.  
  10.     result = []
  11.     l, r = 0, 0
  12.     while l < len(left) and r < len(right):
  13.         if left[l] <= right[r]:
  14.             result.append(left[l])
  15.             l += 1
  16.         else:
  17.             result.append(right[r])
  18.             r += 1
  19.     while l < len(left):
  20.         result.append(left[l])
  21.         l += 1
  22.     while r < len(right):
  23.         result.append(right[r])
  24.         r += 1
  25.     return result
  26.  
  27.  
  28. n = int(input())
  29. flowerbeds = []
  30. for i in range(n):
  31.     flowerbed = list(map(int, input().split()))
  32.     flowerbeds.append(flowerbed)
  33.  
  34. flowerbeds = merge_sort(flowerbeds)
  35.  
  36. i_start = 0
  37. i_end = 1
  38. start = flowerbeds[0][i_start]
  39. end = flowerbeds[0][i_end]
  40.  
  41. for i in range(n):
  42.     if flowerbeds[i][i_start] >= start and flowerbeds[i][i_end] <= end:
  43.         # start--------------------------end
  44.         #        i_start----------i_end
  45.         continue
  46.     if flowerbeds[i][i_start] <= end:
  47.         # start-------end
  48.         #    i_start----------i_end
  49.         end = flowerbeds[i][i_end]
  50.     else:
  51.         # start----end
  52.         #                 i_start----i_end
  53.         print(start, end)
  54.         start = flowerbeds[i][i_start]
  55.         end = flowerbeds[i][i_end]
  56. print(start, end)
  57.  
  58. --------------------------------------------------------------------------------------------------------------------------------
  59. Способ 2:
  60.  
  61. def merge_sort(array):
  62.     if len(array) == 1:
  63.         return array
  64.  
  65.     left = merge_sort(array[:len(array) // 2])
  66.     right = merge_sort(array[len(array) // 2:])
  67.  
  68.     result = []
  69.     l, r = 0, 0
  70.     while l < len(left) and r < len(right):
  71.         if left[l] <= right[r]:
  72.             result.append(left[l])
  73.             l += 1
  74.         else:
  75.             result.append(right[r])
  76.             r += 1
  77.     while l < len(left):
  78.         result.append(left[l])
  79.         l += 1
  80.     while r < len(right):
  81.         result.append(right[r])
  82.         r += 1
  83.  
  84.     return result
  85.  
  86.  
  87. n = int(input())
  88. flowerbeds_starts = []
  89. flowerbeds_ends = []
  90. for pos in range(n):
  91.     flowerbed = input().split()
  92.     flowerbeds_starts.append(int(flowerbed[0]))
  93.     flowerbeds_ends.append(int(flowerbed[1]))
  94.  
  95. flowerbeds_starts = merge_sort(flowerbeds_starts)
  96. flowerbeds_ends = merge_sort(flowerbeds_ends)
  97.  
  98. start = flowerbeds_starts[0]
  99. end = flowerbeds_ends[0]
  100. for pos in range(1, n):
  101.     if flowerbeds_ends[pos - 1] >= end:
  102.         end = flowerbeds_ends[pos - 1]
  103.     if flowerbeds_starts[pos] > flowerbeds_ends[pos - 1]:
  104.         print(start, end)
  105.         start = flowerbeds_starts[pos]
  106.         end = flowerbeds_ends[pos]
  107. end = flowerbeds_ends[n - 1]
  108. print(start, end)
  109.  
Advertisement
Add Comment
Please, Sign In to add comment