Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- На плоскости дан набор точек с целочисленными координатами. Необходимо найти такой треугольник наибольшей площади с вершинами в этих точках, у которого нет общих точек с осью Оу, а одна из сторон лежит на оси Ох.
- Напишите эффективную, в том числе по памяти, программу, которая будет решать эту задачу. Размер памяти, которую использует Ваша программа, не должен зависеть от количества точек.
- Перед текстом программы кратко опишите используемый алгоритм решения задачи и укажите используемый язык программирования и его версию.
- Описание входных данных
- В первой строке вводится одно целое положительное число - количество точек N.
- Каждая из следующих N строк содержит два целых числа - сначала координата х, затем координата у очередной точки. Числа разделены пробелом.
- Описание выходных данных
- Программа должна вывести одно число - максимальную площадь треугольника, удовлетворяющего условиям задачи. Если такого треугольника не существует, программа должна вывести ноль.
- Пример входных данных:
- 8
- -10 0
- 2 0
- 0 4
- 3 3
- 7 0
- 5 5
- 4 0
- 9 -9
- Пример выходных данных для приведённого выше примера входных данных:
- 22.5
- N = int(input())
- S = 0
- Ty = [0] * 3
- Tx = [0] * 3
- xmin = 0
- ymax = 0
- for i in range(N):
- p = input().split()
- x = int(p[0])
- y = int(p[1])
- if x != 0:
- if y == 0:
- if abs(x) - abs(Tx[0]) > xmin:
- Tx[0] = x
- Ty[0] = y
- elif abs(x) - abs(Tx[1]) > xmin:
- Tx[1] = x
- Ty[1] = y
- else:
- if abs(y) > ymax:
- ymax = abs(y)
- Ty[2] = y
- Tx[2] = x
- print('Точки:')
- for i in range(3):
- print(Tx[i], Ty[i])
- if (Tx[0] > 0 and Tx[1] > 0) or (Tx[0] < 0 and Tx[1] < 0):
- st = abs(Tx[0] - Tx[1])
- else:
- st = abs(Tx[0])+ abs(Tx[1])
- S = (st * abs(Ty[2]))/2
- print('Площадь треугольника:', S)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement