Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include<iostream>#include<cstring>#include<string>#include<algorithm>#include<cmath>#include<queue>#include<vector>#include<cstdio>using namespace std;struct Point{double x,y;};double Cross(Point P,Point A,Point B){return (A.x-P.x)*(B.y-P.y)-(A.y-P.y)*(B.x-P.x);}int main(){int T;scanf("%d",&T);Point P,A,B,C;while(T--){scanf("%lf %lf %lf %lf %lf %lf %lf %lf",&P.x,&P.y,&A.x,&A.y,&B.x,&B.y,&C.x,&C.y);double ans1=Cross(A,B,P);double ans2=Cross(B,C,P);double ans3=Cross(C,A,P);if((ans1<=0.00&&ans2<=0.00&&ans3<=0.00)||(ans1>=0.00&&ans2>=0.00&ans3>=0.00)){puts("YES");}