#include<iostream>
using namespace std;
int main()
{
int n, m;
int* a, * b;
char *c;
int* r, * s, * t;
cin >> n >> m;
int count;
r = new int[m];
t = new int[m];
s = new int[m];
a = new int[n];
b = new int[n];
c = new char[n];
string* d;
d = new string[m];
for (int i = 0; i < n; i++)
cin >> a[i] >> b[i] >> c[i];
for (int i = 0; i < m; i++)
cin >> r[i] >> s[i] >> t[i];
for (int j = 0; j < m; j++)
{
if ((r[j] + s[j] * a[0] + t[j] * b[0] > 0) && c[0] == 'A')
{
count = 0;
for (int i = 1; i < n; i++)
{
if (c[i] == 'A' && (r[j] + s[j] * a[i] + t[j] * b[i] > 0))
count++;
else if (c[i] == 'B' && (r[j] + s[j] * a[i] + t[j] * b[i] < 0))
count++;
else
break;
}
if (count == n - 1)
d[j] = "Yes";
else
d[j] = "No";
}
else if ((r[j] + s[j] * a[0] + t[j] * b[0] > 0) && c[0] == 'B')
{
count = 0;
for (int i = 1; i < n; i++)
{
if (c[i] == 'B' && (r[j] + s[j] * a[i] + t[j] * b[i] > 0))
count++;
else if (c[i] == 'A' && (r[j] + s[j] * a[i] + t[j] * b[i] < 0))
count++;
else
break;
}
if (count == n - 1)
d[j] = "Yes";
else
d[j] = "No";
}
else if ((r[j] + s[j] * a[0] + t[j] * b[0] < 0) && c[0] == 'A')
{
count = 0;
for (int i = 1; i < n; i++)
{
if (c[i] == 'A' && (r[j] + s[j] * a[i] + t[j] * b[i] < 0))
count++;
else if (c[i] == 'B' && (r[j] + s[j] * a[i] + t[j] * b[i] > 0))
count++;
else
break;
}
if (count == n - 1)
d[j] = "Yes";
else
d[j] = "No";
}
else if ((r[j] + s[j] * a[0] + t[j] * b[0] < 0) && c[0] == 'B')
{
count = 0;
for (int i = 1; i < n; i++)
{
if (c[i] == 'B' && (r[j] + s[j] * a[i] + t[j] * b[i] < 0))
count++;
else if (c[i] == 'A' && (r[j] + s[j] * a[i] + t[j] * b[i] > 0))
count++;
else
break;
}
if (count == n - 1)
d[j] = "Yes";
else
d[j] = "No";
}
}
for (int i = 0; i < m; i++)
cout << d[i] << endl;
delete[]a;
delete[]b;
delete[]c;
delete[]d;
delete[]r;
delete[]s;
delete[]t;
return 0;
}
CSP 202006-1 线性分类器 C++
最新推荐文章于 2024-07-25 21:43:46 发布