#include<bits/stdc++.h>
using namespace std;
bool a[1003];
int main()
{
int n,m;
cin >> n>>m;
vector<pair<int,int>> arr;
char s;
for (int i = 0; i < n; i ++ ){
int first,second;
cin>>first>>second;
arr.push_back(make_pair(first, second));
cin >> s;
if(s=='A') a[i]=true;
else a[i]=false;
}
int c,c1,c2;
for (int i=0;i<m;i++){
cin >> c>>c1>>c2;
int flag=1;
bool q[1003];
copy(begin(a),end(a),begin(q));
long long t,h;
t=arr[0].first,h=arr[0].second;
if(c+c1*t+c2*h>0){
if(!q[0]){
for (int j = 0; j <n; j++) {
q[j] = !q[j];
}
}
}
else{
if(q[0]){
for (int j = 0; j <n; j++) {
q [j] = !q[j];
}
}
}
for (int i = 0; i < n; i ++ ){
long long t,h;
t=arr[i].first,h=arr[i].second;
if(c+c1*t+c2*h>0){
if(q[i]==0) flag=0;
}
else{
if(q[i]==1) flag=0;
}
}
if(flag==1) cout <<"Yes"<<endl;
else if(flag==0) cout <<"No"<<endl;
}
return 0;
}
一定要注意将点代入直线时运算开long long,不然会爆int,只能过15个样例,开long long就可以解决这个问题