Advertisement
Guest User

Untitled

a guest
May 2nd, 2015
2,496
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.75 KB | None | 0 0
  1. На плоскости дан набор точек с целочисленными координатами. Необходимо найти такой треугольник наибольшей площади с вершинами в этих точках, у которого нет общих точек с осью Оу, а одна из сторон лежит на оси Ох.
  2. Напишите эффективную, в том числе по памяти, программу, которая будет решать эту задачу. Размер памяти, которую использует Ваша программа, не должен зависеть от количества точек.
  3. Перед текстом программы кратко опишите используемый алгоритм решения задачи и укажите используемый язык программирования и его версию.
  4. Описание входных данных
  5. В первой строке вводится одно целое положительное число - количество точек N.
  6. Каждая из следующих N строк содержит два целых числа - сначала координата х, затем координата у очередной точки. Числа разделены пробелом.
  7. Описание выходных данных
  8. Программа должна вывести одно число - максимальную площадь треугольника, удовлетворяющего условиям задачи. Если такого треугольника не существует, программа должна вывести ноль.
  9. Пример входных данных:
  10. 8
  11. -10 0
  12. 2 0
  13. 0 4
  14. 3 3
  15. 7 0
  16. 5 5
  17. 4 0
  18. 9 -9
  19. Пример выходных данных для приведённого выше примера входных данных:
  20. 22.5
  21.  
  22.  
  23. N = int(input())
  24. S = 0
  25. Ty = [0] * 3
  26. Tx = [0] * 3
  27. xmin = 0
  28. ymax = 0
  29. for i in range(N):
  30.     p = input().split()
  31.     x = int(p[0])
  32.     y = int(p[1])
  33.     if x != 0:
  34.         if y == 0:
  35.             if abs(x) - abs(Tx[0]) > xmin:
  36.                 Tx[0] = x
  37.                 Ty[0] = y
  38.             elif abs(x) - abs(Tx[1]) > xmin:
  39.                 Tx[1] = x
  40.                 Ty[1] = y
  41.         else:
  42.             if abs(y) > ymax:
  43.                 ymax = abs(y)
  44.                 Ty[2] = y
  45.                 Tx[2] = x
  46. print('Точки:')
  47. for i in range(3):
  48.     print(Tx[i], Ty[i])
  49. if (Tx[0] > 0 and Tx[1] > 0) or (Tx[0] < 0 and Tx[1] < 0):
  50.     st = abs(Tx[0] - Tx[1])
  51. else:
  52.     st = abs(Tx[0])+ abs(Tx[1])
  53. S = (st * abs(Ty[2]))/2
  54. print('Площадь треугольника:', S)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement