满分代码:
#include <iostream>
#include <vector>
#define N 1000
using namespace std;
typedef struct {
int x;
int y;
char type;
} Point;
typedef struct {
int a;
int b;
int c;
string pos;
} Line;
int main ( ) {
int n, m;
cin >> n >> m;
vector< Point> pa, pb;
vector< Line> line;
for ( int i= 0 ; i< n; i++ ) {
Point p;
cin >> p. x >> p. y >> p. type;
if ( p. type== 'A' ) pa. push_back ( p) ;
else pb. push_back ( p) ;
}
for ( int j= 0 ; j< m; j++ ) {
Line l;
int flag= 0 ;
cin >> l. a >> l. b >> l. c;
int counta= 0 , countb= 0 ;
for ( int k= 0 ; k< pa. size ( ) ; k++ ) {
if ( ! flag) {
if ( l. a+ l. b* pa[ k] . x+ l. c* pa[ k] . y> 0 ) counta++ ;
else {
flag= 1 ;
counta++ ;
}
} else {
if ( l. a+ l. b* pa[ k] . x+ l. c* pa[ k] . y< 0 ) counta++ ;
}
}
if ( counta== pa. size ( ) ) {
for ( int j= 0 ; j< pb. size ( ) ; j++ ) {
if ( flag) {
if ( l. a+ l. b* pb[ j] . x+ l. c* pb[ j] . y> 0 ) countb++ ;
} else {
if ( l. a+ l. b* pb[ j] . x+ l. c* pb[ j] . y< 0 ) countb++ ;
}
}
}
if ( countb== pb. size ( ) ) {
l. pos= "Yes" ;
} else {
l. pos= "No" ;
}
line. push_back ( l) ;
}
for ( int i= 0 ; i< line. size ( ) ; i++ ) {
cout << line[ i] . pos << endl;
}
return 0 ;
}