#include<stdio.h> #include<string.h> int main() { int t,n,x[110],y[110],X[4],Y[4]; int i,j,s,z,sum,min; double k[4],b[4],c[4]; scanf("%d",&t); while(t--) { scanf("%d",&n); for(i=0;i<n;i++) scanf("%d%d",&x[i],&y[i]); min=9999999;s=-1; for(i=0;i<4;i++) { scanf("%d%d",&X[i],&Y[i]); if(Y[i]<min) { min=Y[i]; s=i; } else if(Y[i]==min) { if(X[i]<X[s]) s=i; } } sum=0; if(Y[s]==Y[(s+1)%4]) { for(i=0;i<n;i++) { if(x[i]>=X[s]&&x[i]<=X[(s+1)%4]&&y[i]>=Y[s]&&y[i]<=Y[(s+2)%4]) sum++; } printf("%d\n",sum); continue; } for(i=0;i<4;i++) { z=s+i; k[z]=1.0*(Y[(z+1)%4]-Y[z])/(X[(z+1)%4]-X[z]); b[z]=-1; c[z]=(-k[z]*X[z]+Y[z]); if(k[z]<0) { k[z]=-k[z];b[z]=-b[z];c[z]=-c[z]; } } for(i=0;i<n;i++) { if(k[s]*x[i]+b[s]*y[i]+c[s]<=0) if(k[(s+1)%4]*x[i]+b[(s+1)%4]*y[i]+c[(s+1)%4]<=0) if(k[(s+2)%4]*x[i]+b[(s+2)%4]*y[i]+c[(s+2)%4]>=0) if(k[(s+3)%4]*x[i]+b[(s+3)%4]*y[i]+c[(s+3)%4]>=0) sum++; } printf("%d\n",sum); } return 0; } |
Double click to view unformatted code.