题目描述
小明在上学的路上,看到了小花,小花也看见了他,两个人深情的对视了一下,然后小花就对小明说:你爱过我吗?小明说:爱过。小花就对小明说,那你能帮我做一个题目吗?如果你能做对的话,就证明你爱过我。小明自信的回答好啊。小花说,给你三个人的坐标,以及小花的坐标,她想知道她是不是处在他们三个人的范围之内。小明顿时慌了,早知道我就不说了,他赶紧找到了acmer来帮他解决了。

输入描述:
多组输入,输入A,B,C的坐标(x1,y1,x2,y2,x3,y3),以及小花的坐标(x,y)。(范围都是在0到100之内的整数)
输出描述:
是的话就输出YES,否则输出NO
示例1
输入
0 0 3 0 0 4
1 1
输出
YES
题目链接:
题意描述:
判断p是否被abc围起来。
解题思路:
求出abc的面积,然后与pab+pac+pbc的面积相比较,如果相等就证明被围起来了,当然已知x1,y1,x2,y2,x3,y3,求面积时需按逆时针方向((x1*y2-x2*y1)+(x2*y3-x3*y2)+(x3*y1-x1*y3))/2.0,如果不知道方向则fabs(((x1*y2-x2*y1)+(x2*y3-x3*y2)+(x3*y1-x1*y3))/2.0)。
程序代码:
#include<stdio.h>
#include<math.h>
int main()
{
int x1,y1,x2,y2,x3,y3,x,y;
double sum,sum1,sum2,sum3;
while(scanf("%d%d%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&x3,&y3,&x,&y)!=EOF)
{
if(x1==x2&&x1==x3)
{
printf("NO\n");
continue;
}
if(fabs((y2-y1)*1.0/(x2-x1)-(y3-y2)*1.0/(x3-x2))<1e-10)
{
printf("NO\n");
continue;
}
sum=fabs(((x1*y2-x2*y1)+(x2*y3-x3*y2)+(x3*y1-x1*y3))/2.0);
sum1=fabs(((x*y2-x2*y)+(x2*y3-x3*y2)+(x3*y-x*y3))/2.0);
sum2=fabs(((x*y1-x1*y)+(x1*y3-x3*y1)+(x3*y-x*y3))/2.0);
sum3=fabs(((x*y1-x1*y)+(x1*y2-x2*y1)+(x2*y-x*y2))/2.0);
if(fabs(sum-(sum1+sum2+sum3))<1e-10)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}