def point_inside_prlgm(x,y,poly):
inside = False
xb = poly[0][0] - poly[1][0]
yb = poly[0][1] - poly[1][1]
xc = poly[2][0] - poly[1][0]
yc = poly[2][1] - poly[1][1]
xp = x - poly[1][0]
yp = y - poly[1][1]
d = xb * yc - yb * xc;
if (d <> 0):
oned = 1.0 / d;
bb = (xp * yc - xc * yp) * oned
cc = (xb * yp - xp * yb) * oned
inside = (bb >= 0) & (cc >= 0) & (bb <= 1) & (cc <= 1)
return inside
print(point_inside_prlgm(1, 1, [[1, 2], [0, 0], [2, 0]]))
print(point_inside_prlgm(-1, 1, [[2, 1], [0, 0], [2, 0]]))
ZGVmIHBvaW50X2luc2lkZV9wcmxnbSh4LHkscG9seSk6CiAgICBpbnNpZGUgPSBGYWxzZQogICAgeGIgPSBwb2x5WzBdWzBdIC0gcG9seVsxXVswXQogICAgeWIgPSBwb2x5WzBdWzFdIC0gcG9seVsxXVsxXQogICAgeGMgPSBwb2x5WzJdWzBdIC0gcG9seVsxXVswXQogICAgeWMgPSBwb2x5WzJdWzFdIC0gcG9seVsxXVsxXQogICAgeHAgPSB4IC0gcG9seVsxXVswXQogICAgeXAgPSB5IC0gcG9seVsxXVsxXQogICAgZCA9IHhiICogeWMgLSB5YiAqIHhjOwogICAgaWYgKGQgPD4gMCk6CiAgICAgICAgb25lZCA9IDEuMCAvIGQ7CiAgICAgICAgYmIgPSAoeHAgKiB5YyAtIHhjICogeXApICogb25lZAogICAgICAgIGNjID0gKHhiICogeXAgLSB4cCAqIHliKSAqIG9uZWQKICAgICAgICBpbnNpZGUgPSAoYmIgPj0gMCkgJiAoY2MgPj0gMCkgJiAoYmIgPD0gMSkgJiAoY2MgPD0gMSkKICAgIHJldHVybiBpbnNpZGUKICAgIApwcmludChwb2ludF9pbnNpZGVfcHJsZ20oMSwgMSwgW1sxLCAyXSwgWzAsIDBdLCBbMiwgMF1dKSkKcHJpbnQocG9pbnRfaW5zaWRlX3BybGdtKC0xLCAxLCBbWzIsIDFdLCBbMCwgMF0sIFsyLCAwXV0pKSAgICA=