原题大意:
每个机器人分散,可以上下左右移动,但是有些机器人不能向某些方向移动
给出每个机器人的坐标,和每个方向能否正常行进
思路:
用minx, maxx, miny, maxy 记录可以走的范围。
举个栗子:如果(a, b)的机器人不能往右走则mmax = max(mmax, a), 其他方向类似。
最后只需先判断区间是否存在,存在则输出(minx, miny)
代码:
1 #include <iostream> 2 #define MAX 100000 3 using namespace std; 4 5 int q, n, t, x, y; 6 int minx, miny, maxx, maxy; 7 int info[5]; 8 9 int main() 10 { 11 cin >> q; 12 13 for (int i = 1; i <= q; i++) 14 { 15 cin >> n; 16 t = 1; 17 maxx = maxy = MAX; 18 minx = miny = -MAX; 19 for (int j = 1; j <= n; j++) 20 { 21 cin >> x >> y >> info[1] >> info[2] >> info[3] >> info[4]; 22 23 if (!info[1]) minx = max(x, minx); 24 if (!info[2]) maxy = min(y, maxy); 25 if (!info[3]) maxx = min(x, maxx); 26 if (!info[4]) miny = max(y, miny); 27 28 } 29 30 if (minx <= maxx && miny <= maxy) 31 { 32 cout << "1 " << minx << " " << miny << endl; 33 } 34 else 35 { 36 cout << "0" << endl; 37 } 38 } 39 return 0; 40 }