View Code of Problem 2595

#include<stdio.h>
#include"math.h"
#include"string.h"

double mianji(double x1,double y1,double x2,double y2,double x3,double y3)
{
    double x=((x1*y2-x2*y1)+(x2*y3-x3*y2)+(x3*y1-x1*y3))/2;
    return x>0?x:x*(-1.0);
}

int main()
{
int t;
scanf("%d",&t);
while(t--)
{
	double a[102],b[102];
	int num;
	int i,j;
	double  x1,y1,x2,y2,x3,y3,x0,y0;
	double mj,mj1,mj2,mj3,mj4;
	int ans=0;

	scanf("%d",&num);

	for(i=0;i<num;i++)
	scanf("%lf%lf",&a[i],&b[i]);


	scanf("%lf%lf",&x0,&y0);
	scanf("%lf%lf",&x1,&y1);
	scanf("%lf%lf",&x2,&y2);
	scanf("%lf%lf",&x3,&y3);

	mj=(mianji(x0,y0,x1,y1,x2,y2))*2;
	
	for(i=0;i<num;i++)
	{
	mj1=mianji(a[i],b[i],x0,y0,x1,y1);
	mj2=mianji(a[i],b[i],x1,y1,x2,y2);
	mj3=mianji(a[i],b[i],x2,y2,x3,y3);
	mj4=mianji(a[i],b[i],x3,y3,x0,y0);
	
	if((mj1+mj2+mj3+mj4-mj)<0.0000001&&(mj1+mj2+mj3+mj4-mj)>-0.0000001)
		ans++;



	}
	
	printf("%d\n",ans);


	// 0.5 0.5 0.5 1.5 1.5 1.5 1.5 0
	




}

return 0;

}


Double click to view unformatted code.


Back to problem 2595