import java.util.Scanner;publicclassMain{publicstaticvoidmain(String[] args){
Scanner input =newScanner(System.in);int n = input.nextInt();int m = input.nextInt();
Pointer[] a =newPointer[n];
Pointer[] b =newPointer[n];for(int i =0, c =0, d =0; i < n; i++){int x = input.nextInt();int y = input.nextInt();char ch = input.next().charAt(0);switch(ch){case'A':
a[c]=newPointer();
a[c].x = x;
a[c++].y = y;break;case'B':
b[d]=newPointer();
b[d].x = x;
b[d++].y = y;break;}}
String[] output =newString[m];for(int i =0; i < m; i++){
output[i]=answer(a, b,input);}for(int i =0; i < m; i++){
System.out.println(output[i]);}
input.close();}publicstatic String answer(Pointer[] a, Pointer[] b,Scanner input){int x = input.nextInt();int y = input.nextInt();int z = input.nextInt();char position;// 判断a数组在直线的哪一侧if(x + y * a[0].x + z * a[0].y ==0){return"No";}elseif(x + y * a[0].x + z * a[0].y >0){
position ='L';}else{
position ='R';}switch(position){case'L':// 判断a数组是否在直线的同一侧for(int i =1; a[i]!= null; i++){if(x + y * a[i].x + z * a[i].y ==0){return"No";}elseif(x + y * a[i].x + z * a[i].y <0){return"No";}}// 判断b数组是否在直线的同一侧for(int i =0; b[i]!= null; i++){if(x + y * b[i].x + z * b[i].y ==0){return"No";}elseif(x + y * b[i].x + z * b[i].y >0){return"No";}}break;case'R':// 判断a数组是否在直线的同一侧for(int i =1; a[i]!= null; i++){if(x + y * a[i].x + z * a[i].y ==0){return"No";}elseif(x + y * a[i].x + z * a[i].y >0){return"No";}}// 判断b数组是否在直线的同一侧for(int i =0; b[i]!= null; i++){if(x + y * b[i].x + z * b[i].y ==0){return"No";}elseif(x + y * b[i].x + z * b[i].y <0){return"No";}}}// 直线符合要求return"Yes";}}classPointer{int x, y;}
CCF 202006-1import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); int n = input.nextInt(); int m = input.nextInt(); Pointer[] a = new Pointer[n]; Pointer[] b = new Poin