题目:
C语言解答:
#include <stdio.h>
#define M 1000000
int x[M],y[M],u0[M],u1[M],u2[M];
int main(){
int n,m,i,j,z;
int countA=0,countB=0;
int count1,count2,count3,count4;
char type[1000];
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++){
scanf("%d%d%s",&x[i],&y[i],&type[i]);
if(type[i]=='A'){
countA++;
}
if(type[i]=='B'){
countB++;
}
}
for(j=1;j<=m;j++){
scanf("%d%d%d",&u0[j],&u1[j],&u2[j]);
}
//分两种情况,A在线上面B在线下面---B在线上面A在线下面
for(j=1;j<=m;j++){
count1=0,count2=0,count3=0,count4=0;
for(i=1;i<=n;i++){
z=u0[j]+u1[j]*x[i]+u2[j]*y[i];
//A在线上面B在线下面
if(type[i]=='A'&&z>0){
count1++;
}
if(type[i]=='B'&&z<0){
count2++;
}
//B在线上面A在线下面
if(type[i]=='A'&&z<0){
count3++;
}
if(type[i]=='B'&&z>0){
count4++;
}
}
if((count1==countA)&&(count2==countB)){
printf("Yes\n");
}
else if((count3==countA)&&(count4==countB)){
printf("Yes\n");
}
else{
printf("No\n");
}
}
return 0;
}
运行结果: