数学问题:点代入直线方程,结果为正负值分列两侧,以第一个数划分
注意输入格式,空格space也被读入为%c,不能连写成%d%d%c
#include <bits/stdc++.h>
using namespace std;
struct Point{
int x, y;
char sort;
}p[1005];
int main() {
int n, m, a, b, c;
scanf("%d %d", &n, &m);
for(int i=0; i<n; ++i) scanf("%d %d %c", &p[i].x, &p[i].y, &p[i].sort);
for(int i=0; i<m; ++i){
cin >> a >> b >> c;
bool flag[2], yes=true;
flag[p[0].sort-'A']=a+p[0].x*b+p[0].y*c>0? true:false;
flag[(p[0].sort-'A'+1)%2]=!flag[p[0].sort-'A'];
for(int j=1; j<n; ++j){
if(a+p[j].x*b+p[j].y*c>0){
if(flag[p[j].sort-'A']==false){
cout << "No" << endl;
yes=false;
break;
}
}
else if(flag[p[j].sort-'A']==true){
cout << "No" << endl;
yes=false;
break;
}
}
if(yes) cout << "Yes" << endl;
}
return 0;
}