Advertisement
Guest User

Untitled

a guest
Dec 18th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.96 KB | None | 0 0
  1. l1, r1, l2, r2, l3, r3 = 0, 2, 4, 5, 3, 6 # 1
  2. #l1, r1, l2, r2, l3, r3 = 1, 2, 9, 10, 12, 20 # 3
  3. #l1, r1, l2, r2, l3, r3 = 1, 5, 0, 1, 4, 8 # 0
  4.  
  5. if 0 <= l1 < r1 <= 100 and 0 <= l1 < r1 <= 100 and 0 <= l1 < r1 <= 100:
  6.     # группируем все по tuple - спичкам. match - это название спички
  7.     m1 = (l1, r1)
  8.     m2 = (l2, r2)
  9.     m3 = (l3, r3)
  10.     # 3!=6 возможно 6 перестановок:
  11.     # m1, m2, m3
  12.     # m2, m1, m3
  13.     # m2, m3, m1
  14.     # m3, m2, m1
  15.     # m3, m1, m2
  16.     # m1, m3, m2
  17.     # онда из перестановок может образовать непрерывную линию из спичек
  18.  
  19.     # проверяем первый вариант
  20.     if (m1[1] < m2[1] < m3[1]) \
  21.         and (m1[1] >= m2[0] and m2[1] >= m3[0]) \
  22.         or (m2[1] < m1[1] < m3[1]) \
  23.         and (m2[1] >= m1[0] and m1[1] >= m3[0]) \
  24.         or (m2[1] < m3[1] < m1[1]) \
  25.         and (m2[1] >= m3[0] and m3[1] >= m1[0]) \
  26.         or (m3[1] < m2[1] < m1[1]) \
  27.         and (m3[1] >= m2[0] and m2[1] >= m1[0]) \
  28.         or (m3[1] < m1[1] < m2[1]) \
  29.         and (m3[1] >= m1[0] and m1[1] >= m2[0]) \
  30.         or (m1[1] < m3[1] < m2[1]) \
  31.         and (m1[1] >= m3[0] and m3[1] >= m2[0]) :
  32.             # спички не надо двигать
  33.             print(0)
  34.     else:
  35.         # Если надо двигать первую спичку:
  36.         # есть промежуток между 2й и 3й спичкой
  37.         # и его можно залатать длиной 1й спички
  38.         # 2я и 3я соеденены, двигаем 1ю к ним
  39.         # 3я и 2я соеденены, двигаем 1ю к ним
  40.         cond = (m3[0] > m2[1] and (m3[0] - m2[1]) <= (m1[1] - m1[0]))
  41.         cond2 = (m3[0] > m1[1] and (m3[0] - m1[1]) <= (m2[1] - m2[0]))
  42.         cond3 = (m2[0] > m1[1] and (m2[0] - m1[1]) <= (m3[1] - m3[0]))
  43.         if cond \
  44.             or ((m2[0]< m3[0]) and m2[1] >= m3[0]) \
  45.             or ((m3[0]< m2[0]) and m3[1] >= m2[0]):
  46.             # if (m2[1] >= m3[0]) :
  47.             #   print("aaa")
  48.             # if    (m3[1] >= m2[0]) :
  49.             #   print("bbb")
  50.             print(1)
  51.         # Если надо двигать вторую спичку:
  52.         # есть промежуток между 1й и 3й спичкой
  53.         # и его можно залатать длиной 2й спички
  54.         # 1я и 3я соеденены, двигаем 2ю к ним
  55.         # 3я и 1я соеденены, двигаем 2ю к ним
  56.         elif cond2 \
  57.             or ((m1[0]< m3[0]) and m1[1] >= m3[0]) \
  58.             or ((m3[0]< m1[0]) and m3[1] >= m1[0]) :
  59.             print(2)
  60.         # Если надо двигать третью спичку:
  61.         # есть промежуток между 1й и 2й спичкой
  62.         # и его можно залатать длиной 3й спички
  63.         # 1я и 2я соеденены, двигаем 3ю к ним
  64.         # 2я и 1я соеденены, двигаем 3ю к ним
  65.         elif  cond3 \
  66.             or ((m1[0]< m2[0]) and m1[1] >= m2[0]) \
  67.             or ((m2[0]< m1[0]) and m2[1] >= m1[0]) :
  68.             print(3)
  69.  
  70. else:
  71.     print(-1)
  72.  
  73. # проверяем 1ю спичку
  74. # проверяем 2ю спичку
  75. # проверяем 3ю спичку
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement