Всем известно, что дачники – народ странный, почти такой же, как и программисты. Строят они свои дачи непонятно где, да и выращивают там непонятно что и непонятно зачем. А уж как они туда добираются, это другая история: кто на автобусе, кто на электричке, кто на автомобиле, ну а кто-то вовсе пешком ходит от дома и до самого участка. Так что не стоит удивляться, если вдруг Вы узнаете, что некое садоводческое товарищество располагается на острове, а дачники добираются до него самолетом. Да еще и на этом острове может не быть посадочной полосы, так что высадиться на остров можно, только прыгая с парашютом (мы уж не рассматриваем то, как они возвращаются с дач домой). Рассмотрим этот уникальный случай. Пилот всегда старается осуществить высадку парашютистов таким образом, чтобы дачники приземлялись как можно ближе к своим прямоугольным участкам. Пилоту интересно знать: сколько дачников приземлится на свои участки? Помогите ему решить эту задачу!
Входные данные
В первой строке входного файла INPUT.TXT записано натуральное число N (1 ≤ N ≤ 1000) – количество дачников, далее идут N строк, в каждой из которых описаны координаты каждого дачника и его участка:
X Y X1 Y1 X2 Y2 X3 Y3 X4 Y4
где
(X,Y) – координаты приземления парашютиста
(X1, Y1, X2, Y2, X3, Y3, X4,Y4) – координаты прямоугольного участка на плоскости, указанные последовательно.
Все координаты – целые числа, не превышающие 50000 по абсолютной величине
Выходные данные
В выходной файл OUTPUT.TXT нужно вывести количество дачников, приземлившихся на свой участок. Попадание на границу участка считается попаданием на участок.
Пример
Входные данные
В первой строке входного файла INPUT.TXT записано натуральное число N (1 ≤ N ≤ 1000) – количество дачников, далее идут N строк, в каждой из которых описаны координаты каждого дачника и его участка:
X Y X1 Y1 X2 Y2 X3 Y3 X4 Y4
где
(X,Y) – координаты приземления парашютиста
(X1, Y1, X2, Y2, X3, Y3, X4,Y4) – координаты прямоугольного участка на плоскости, указанные последовательно.
Все координаты – целые числа, не превышающие 50000 по абсолютной величине
Выходные данные
В выходной файл OUTPUT.TXT нужно вывести количество дачников, приземлившихся на свой участок. Попадание на границу участка считается попаданием на участок.
Пример
№
|
INPUT.TXT
|
OUTPUT.TXT
|
1
|
3
6 6 3 6 6 9 8 7 5 4 13 5 9 2 9 8 12 8 12 2 3 2 2 1 2 3 6 3 6 1 |
2
|
Решение
f = open("input.txt","r")
n=int(f.readline())
k=0
def ploch(x,y,x1,y1,x2,y2):
a=((int(x)-int(x1))**2+(int(y)-int(y1))**2)**0.5
b=((int(x)-int(x2))**2+(int(y)-int(y2))**2)**0.5
c=((int(x2)-int(x1))**2+(int(y2)-int(y1))**2)**0.5
p=(a+b+c)/2
global s
s=(p*(p-a)*(p-b)*(p-c))**0.5
for i in range(n):
x,y,x1,y1,x2,y2,x3,y3,x4,y4=f.readline().split()
ploch(x,y,x1,y1,x2,y2)
s1=s
ploch(x,y,x3,y3,x2,y2)
s2=s
ploch(x,y,x3,y3,x4,y4)
s3=s
ploch(x,y,x1,y1,x4,y4)
s4=s
ploch(x1,y1,x2,y2,x4,y4)
ss1=s
ploch(x3,y3,x2,y2,x4,y4)
ss2=s
if ((s1+s2+s3+s4)-(ss1+ss2))<0.00001:
k+=1
f.close()
f1 = open("output.txt","w")
sss=str(k)
f1.write(sss)
f1.close()
Комментариев нет:
Отправить комментарий