数组,for循环
#include<iostream>
using namespace std;
int main()
{
int n,m,c0,c1,c2;
char type[1001];//每个点用数组存放
int x[1001],y[1001];
cin>>n>>m;
for(int i=0;i<n;i++)
{
cin>>x[i]>>y[i]>>type[i]; //输入点
}
for(int j=0;j<m;j++)
{
cin>>c0>>c1>>c2;
char sign1,sign2;
if((c0+c1*x[0]+c2*y[0])>0)//先判断第一个点的type类型,如果第一个点在直线某个方向,则直线此方向所有点都应是第一个点的type类型,另一个方向则应该是另一种type类型。此处应注意c0+c1*x[0]+c2*y[0])>0即可判断点和直线关系,不用再分直线垂直或不垂直两种情况
{
if(type[0]=='A')
{
sign1='A';
sign2='B';
}
else
{
sign1='B';
sign2='A';
}
}
else
{
if(type[0]=='B')
{
sign1='A';
sign2='B';
}
else
{
sign1='B';
sign2='A';
}
}
int flag=0;
for(int i=1;i<n;i++)
{
if((c0+c1*x[i]+c2*y[i])>0)
{
if(type[i]==sign1)
flag=0;
else
{
flag=1;
break;
}
}
else
{
if(type[i]==sign2)
flag=0;
else
{
flag=1;
break;
}
}
}
if(flag==0)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}