新增知识点:
无
'''
n个点
每个点表示为 (xi,yi,ti)
m个直线
每个直线 c+ax+by=0
求给定一条直线,能否正确分类全部的点
'''
finput = input()
n = int(finput.split(' ')[0])
m = int(finput.split(' ')[1])
As = [] # 存放A类点
Bs = [] # 存放B类点
res = []
for i in range(n):
p = input()
xi = int(p.split(' ')[0])
yi = int(p.split(' ')[1])
ti = p.split(' ')[2]
if ti == 'A':
As.append((xi, yi))
if ti == 'B':
Bs.append((xi, yi))
for i in range(m):
l = input()
c = int(l.split(' ')[0])
a = int(l.split(' ')[1])
b = int(l.split(' ')[2])
isA = True
preA = c + a * As[0][0] + b * As[0][1] # 记录第一个点的结果
for j in range(1, len(As)):
nowA = c + a * As[j][0] + b * As[j][1]
if preA > 0 and nowA > 0 or preA < 0 and nowA < 0 or preA == 0 and nowA == 0:
pass
else: # 存在某个点和第一个点结果不同,则不能正确分类,A类剩下的和B类也不用判断了
isA = False
res.append('No')
break
if isA == True: # 只有该直线可以全部正确分类A,则判断B类
isB = True
preB = c + a * Bs[0][0] + b * Bs[0][1] # 记录第一个点的结果
for j in range(1, len(Bs)):
nowB = c + a * Bs[j][0] + b * Bs[j][1]
if preB > 0 and nowB > 0 or preB < 0 and nowB < 0 or preB == 0 and nowB == 0:
pass
else: # 存在某个点和第一个点结果不同,则不能正确分类,直接跳出
isB = False
res.append('No')
break
if isB == True:
res.append('Yes')
for r in res:
print(r)