鄙人不才,此中鄙陋甚多,望海涵!!!
先读入点的信息,用pair可以方便的存储,最终再读入边的信息,将点带入观察在直线2边的分布情况,输出结果!
为保险起见,用long long存储,因为题中存在int * int 的情况,且未明确给出数据范围!!!
#include<iostream>
using namespace std;
const int N=1010;
typedef long long LL;
pair<LL,LL> a[N],b[N];
int st,se;
int main()
{
int n,m;
cin>>n>>m;
int t=0,q=0;
for(int i=1;i<=n;i++)
{
LL x,y;
char op[2];
scanf("%lld%lld%s",&x,&y,op);
if(*op=='A') a[q++]={x,y};
else b[t++]={x,y};
}
for(int i=1;i<=m;i++)
{
LL m1,m2,m3;
cin>>m1>>m2>>m3;
se=0,st=0;
for(int j=0;j<q;j++)
if(m1+m2*a[j].first+m3*a[j].second>0) se++;
for(int j=0;j<t;j++)
if(m1+m2*b[j].first+m3*b[j].second<0) st++;
if((se==q && st==t) || (se==0 && st==0)) puts("Yes");
else puts("No");
}
return 0;
}