Нужно вычислить находиться точка в треугольнике или нет
Входной файл
Дано N количество тестов
Далее следует N*2 строк координаты треугольника x1 y1 x2 y2 x3 y3 и координаты точки x0 y0
Как можно ускорить этот код
from decimal import * def check(x1,y1,x2,y2,x3,y3,x0,y0): x1=Decimal(x1) y1=Decimal(y1) x2=Decimal(x2) y2=Decimal(y2) x3=Decimal(x3) y3=Decimal(y3) x0=Decimal(x0) y0=Decimal(y0) sample=((x1*y2*1)+(y1*1*x3)+(1*x2*y3)-(1*y2*x3)-(y1*x2*1)-(x1*1*y3))/2 if sample<0: sample*=-1 test1=((x0*y2*1)+(y0*1*x3)+(1*x2*y3)-(1*y2*x3)-(y0*x2*1)-(x0*1*y3))/2 test2=((x1*y0*1)+(y1*1*x3)+(1*x0*y3)-(1*y0*x3)-(y1*x0*1)-(x1*1*y3))/2 test3=((x1*y2*1)+(y1*1*x0)+(1*x2*y0)-(1*y2*x0)-(y1*x2*1)-(x1*1*y0))/2 if test1<0: test1*=-1 if test2<0: test2*=-1 if test3<0: test3*=-1 if test1+test2+test3==sample: return "YES\n" else: return "NO\n" f=open("trianglep.in") l=f.read() f.close() s=l.split() base=int(s[0]) set=1 f=open("trianglep.out","w") for i in xrange(base): f.write(check(s[set],s[set+1],s[set+2],s[set+3],s[set+4],s[set+5],s[set+6],s[set+7])) set+=8 f.close()