#include <stdio.h>
struct point { double x, y; };
// Читать координаты точки
struct point get()
{
struct point a;
scanf("%lf%lf", &a.x, &a.y); // читаем координаты точки
return a;
}
// Вычисляет положение точки D(xd,yd) относительно прямой AB
double g(struct point a, struct point b, struct point d)
{
return (d.x - a.x) * (b.y - a.y) - (d.y - a.y) * (b.x - a.x);
}
// Лежат ли точки C и D с одной строны прямой (AB)?
bool f(struct point a, struct point b, struct point c, struct point d)
{
return g(a, b, c) * g(a, b, d) >= 0;
}
int main() {
struct point a = get(), b = get(), c = get(), d = get();
printf( f(a,b,c,d) && f(b,c,a,d) && f(c,a,b,d) ? "yes" : "no");
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgpzdHJ1Y3QgcG9pbnQgeyBkb3VibGUgeCwgeTsgfTsKCi8vINCn0LjRgtCw0YLRjCDQutC+0L7RgNC00LjQvdCw0YLRiyDRgtC+0YfQutC4CnN0cnVjdCBwb2ludCBnZXQoKSAKewoJc3RydWN0IHBvaW50IGE7CglzY2FuZigiJWxmJWxmIiwgJmEueCwgJmEueSk7IC8vINGH0LjRgtCw0LXQvCDQutC+0L7RgNC00LjQvdCw0YLRiyDRgtC+0YfQutC4CglyZXR1cm4gYTsKfQoKLy8g0JLRi9GH0LjRgdC70Y/QtdGCINC/0L7Qu9C+0LbQtdC90LjQtSDRgtC+0YfQutC4IEQoeGQseWQpINC+0YLQvdC+0YHQuNGC0LXQu9GM0L3QviDQv9GA0Y/QvNC+0LkgQUIKZG91YmxlIGcoc3RydWN0IHBvaW50IGEsIHN0cnVjdCBwb2ludCBiLCBzdHJ1Y3QgcG9pbnQgZCkgCnsKCXJldHVybiAoZC54IC0gYS54KSAqIChiLnkgLSBhLnkpIC0gKGQueSAtIGEueSkgKiAoYi54IC0gYS54KTsKfQoKLy8g0JvQtdC20LDRgiDQu9C4INGC0L7Rh9C60LggQyDQuCBEINGBINC+0LTQvdC+0Lkg0YHRgtGA0L7QvdGLINC/0YDRj9C80L7QuSAoQUIpPwpib29sIGYoc3RydWN0IHBvaW50IGEsIHN0cnVjdCBwb2ludCBiLCBzdHJ1Y3QgcG9pbnQgYywgc3RydWN0IHBvaW50IGQpIAp7CglyZXR1cm4gZyhhLCBiLCBjKSAqIGcoYSwgYiwgZCkgPj0gMDsKfQoKaW50IG1haW4oKSB7CglzdHJ1Y3QgcG9pbnQgYSA9IGdldCgpLCBiID0gZ2V0KCksIGMgPSBnZXQoKSwgZCA9IGdldCgpOwoJcHJpbnRmKAlmKGEsYixjLGQpICYmIGYoYixjLGEsZCkgJiYgZihjLGEsYixkKSA/ICJ5ZXMiIDogIm5vIik7CglyZXR1cm4gMDsKfQ==