#include<stdio.h> #include<math.h> #include<stdlib.h> #include<string.h> 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%lf%lf%lf%lf%lf%lf",&x0,&y0,&x1,&y1,&x2,&y2,&x3,&y3); mj=abs(1.0*0.5*(1.0*(x0*y1-x1*y0)+1.0*(x1*y2-x2*y1)+1.0*(x2*y3-x3*y2)+1.0*(x3*y0-x0*y3))); for(i=0;i<num;i++) { mj1=abs(0.5*((x0*y1-x1*y0)+(x1*b[i]-a[i]*y1)+(a[i]*y0-x0*b[i]))); mj2=abs(0.5*((x1*y2-x2*y1)+(x2*b[i]-a[i]*y2)+(a[i]*y1-x1*b[i]))); mj3=abs(0.5*((x2*y3-x3*y2)+(x3*b[i]-a[i]*y3)+(a[i]*y2-x2*b[i]))); mj4=abs(0.5*((x3*y0-x0*y3)+(x0*b[i]-a[i]*y0)+(a[i]*y3-x3*b[i]))); if((mj1+mj2+mj3+mj4-mj)<0.00001&&(mj1+mj2+mj3+mj4-mj)>-0.00001) 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.