满分源码
# include <stdio.h>
# include <stdlib.h>
# include <iostream>
# pragma warning ( disable: 4996 )
using namespace std;
const int N = 1000 ;
int main ( )
{
int n, m;
scanf ( "%d %d" , & n, & m) ;
int arr[ N] [ 2 ] , brr[ N] [ 2 ] ;
int a = 0 , b = 0 ;
int x, y;
char z;
for ( int i = 0 ; i < n; i++ ) {
scanf ( "%d %d %c" , & x, & y, & z) ;
if ( z == 'A' ) {
arr[ a] [ 0 ] = x;
arr[ a] [ 1 ] = y;
a++ ;
}
if ( z == 'B' ) {
brr[ b] [ 0 ] = x;
brr[ b] [ 1 ] = y;
b++ ;
}
}
int crr[ 20 ] [ 3 ] ;
int a1, b1, c1;
for ( int i = 0 ; i < m; i++ ) {
scanf ( "%d %d %d" , & a1, & b1, & c1) ;
crr[ i] [ 0 ] = a1;
crr[ i] [ 1 ] = b1;
crr[ i] [ 2 ] = c1;
}
for ( int i = 0 ; i < m; i++ ) {
int aflag0 = 0 , aflag1 = 0 , bflag0 = 0 , bflag1 = 0 ;
for ( int j = 0 ; j < a; j++ ) {
int ret = crr[ i] [ 0 ] + crr[ i] [ 1 ] * arr[ j] [ 0 ] + crr[ i] [ 2 ] * arr[ j] [ 1 ] ;
if ( ret < 0 ) aflag0 = 1 ;
if ( ret > 0 ) aflag1 = 1 ;
}
if ( aflag0 * aflag1 == 1 ) {
printf ( "No\n" ) ;
continue ;
}
for ( int k = 0 ; k < b; k++ ) {
int ret = crr[ i] [ 0 ] + crr[ i] [ 1 ] * brr[ k] [ 0 ] + crr[ i] [ 2 ] * brr[ k] [ 1 ] ;
if ( ret < 0 ) bflag0 = 1 ;
if ( ret > 0 ) bflag1 = 1 ;
}
if ( bflag0 * bflag1 == 1 ) {
printf ( "No\n" ) ;
continue ;
}
if ( aflag0 * bflag1 == 1 || aflag1 * bflag0 == 1 ) {
printf ( "Yes\n" ) ;
}
else {
printf ( "No\n" ) ;
}
}
return 0 ;
}