N 로봇은 실험실에서 탈출! 이 로봇은 실험 때문에 당신은 가능한 한 빨리 그들을 발견해야하고, 그들의 행동은 아직 테스트하지, 그래서 그들은 정말 위험 할 수 있습니다!
다행히, 당신의 로봇은 탈출하더라도, 당신은 여전히 그들에 일부 제어 할 수 있습니다. 무한이 좌표 평면 당신이 살고있는 세상을 모델링 할 수 있으며, i 번째 로봇은 현재 지점을 갖는 좌표 (XI, 이순신)에 있습니다 : 우선, 각 로봇의 위치를 알고있다. 또한, 당신은 로봇의 모든 정확히 하나의 명령을 보낼 수 있습니다. 이 명령은 정수 개의 번호 X 및 Y를 포함해야하고, 각 로봇이 명령을 수신하면, 지점 갖는 좌표 (X, Y)를 향해 이동하기 시작. 로봇 두 경우에 그 운동을 중지 :
- 하나는 (X, Y)이 도달;
- 아니면 가까이 (X, Y)을 얻을 수 없습니다.
일반적으로, 모든 로봇은 다른 지점 좌표 평면의 어느 지점에서 얻을 수 있어야합니다. 각 로봇은 일반적으로 이동하는 네 가지 작업을 수행 할 수 있습니다. 의는 (XC, YC)와 같은 로봇의 현재 좌표를 나타내는 보자. 그런 다음 이동 시스템은 네 개의 인접 점의 이동 할 수 있습니다 :
- 제 조치가 이동할 수 있도록 (XC, YC)에 (1-XC, YC);
- 두 번째 동작은 (XC, YC) (XC, YC + 1)로 이동할 수 있도록;
- 제 조치가 이동할 수 있도록 (XC, YC) 내지 (XC + 1, YC);
- 네번째 동작 그것이 (XC, YC)까지 이동할 수 있도록 (XC, YC-1).
불행하게도, 일부 로봇의 일부 이동 시스템이 제대로 작동 것 같다. 각 로봇의 경우 당신은 그것을 수행 할 수있는 작업을 알고, 어떤을 그것을 수행 할 수 없습니다.
당신은 정말 모든 로봇이 동일한 지점에서 수집 명령을 보내려고합니다. 이렇게하려면 각 로봇이 점 (X, Y)에 도달 할 수 있도록 정수 번호 X와 Y의 쌍을 선택해야합니다. 그러한 점을 찾을 수 있습니까?
입력
쿼리 수 - 첫 번째 줄은 하나의 정수 Q (1≤q≤105)가 포함되어 있습니다.
그런 다음 Q 쿼리은 다음과 같습니다. 쿼리에서 로봇의 수 - 각 쿼리는 한 줄에 하나의 정수 n (1≤n≤105)를 포함로 시작합니다. 다음에 n 라인을 따라,이 라인의 제 i는 현재 쿼리의 i 번째 로봇 설명는 여섯 개 정수 번호 XI 이순신, 인터넷, 1, 인터넷, 2, 인터넷, 3, 인터넷, 4 (-105 포함 ≤xi, yi≤105, 0≤fi, j≤1). 처음 두 숫자는 i 번째 로봇의 초기 위치를 설명하고, 다음 네 개의 숫자들은 (i 번째 로봇이 이동하는 데 사용할 수있는 액션 인터넷, J = 1, i 번째 로봇이 사용할 수있는 경우 j 번째를 설명 작용 및 인터넷, J = 0은 j 번째 작업을 사용할 수없는 경우).
모든 쿼리를 통해 로봇의 총 수가 105을 초과하지 않도록 보장한다.
산출
이러한 쿼리 입력에 나타나는 순서대로, 각각 독립적으로 쿼리에 응답해야한다.
쿼리에 응답하려면 다음 중 하나를 수행해야합니다 :
- 모든 n 개의 로봇에 의해 별도의 행에 인쇄 한 숫자 0에 도달 할 지점을 찾을 수없는 경우,
- Xand Y는 모든 N 개의 로봇이 도달 지점의 좌표 X Y 1 : 모든 N 로봇 인쇄 동일한 라인에 3 개의 공간으로 구분하여 정수 도달 한 지점을 찾을 수있는 경우. 두 X 및 Y를 초과하지 않아야한다 (105) 의 절대 값만큼을; 이를 보증되는 모든 로봇에 의해 도달 가능한 적어도 하나의 포인트 좌표를 모두 초과하지 않은 이러한 포인트 다음 적어도 하나 존재하는 경우 (105) 의 절대 값을 .
예
입력
4
이
-2 -1 0 0 0 0
-2 -1 0 0 0 0
삼
1 5 1 1 1 1
2 5 0 1 0 1
(3) 5 1 0 0 0
이
1,337 1,337 0 1 1 1
1,336 1,337 1 1 0 1
1
(3) 5 1 1 1 1
산출
1 -1 -2
1 2 5
0
1 -100000 -100000
문제의 의미 4 개의 수직 및 수평 마크 대상은 로봇의 위치 및 N 로봇을들 수있다
의 절대 값을 초과하지 않는 경계에서 당신을 물어 10 ^ (5)지도, 포인트를 찾을 수 있습니다, 로봇은 모든 점에 도달 할 수 있습니다.
아이디어 : 로봇의 가능한 범위를 유지하는 것은 모든, 갈 수 없어 이러한 로봇의 방향에 따라 갈 수 있습니다
最后看区间是否成立,成立输出 1 和 区间上任意一点,不行输出 0 就行了。
另外,这里区间就是左下点和右上点组成的矩阵。
1 #include<iostream>
2 #include<cstdio>
3 #include<cmath>
4 #include<cstring>
5 #include<map>
6 #include<set>
7 #include<vector>
8 #include<queue>
9 #include<algorithm>
10 using namespace std;
11 #define ll long long
12 const int inf=1e9+7;
13 const int mod=1e9+7;
14
15 const int maxn=1e5+5;
16 pair<int,int> num[maxn];
17
18 int main()
19 {
20 ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
21
22 int T;
23 cin>>T;
24 int n;
25
26 while(T--)
27 {
28 cin>>n;
29
30 pair<int,int> left={-100000,-100000};//左下点
31 pair<int,int> right={100000,100000};//右上点
32 int a,b,c,d;//左上右下不能走
33 for(int i=0;i<n;i++)
34 {
35 cin>>num[i].first>>num[i].second>>a>>b>>c>>d;
36
37 if(a==0)
38 left.first=max(left.first,num[i].first);
39 if(b==0)
40 right.second=min(right.second,num[i].second);
41 if(c==0)
42 right.first=min(right.first,num[i].first);
43 if(d==0)
44 left.second=max(left.second,num[i].second);
45 }
46
47 if(left.first>right.first||left.second>right.second)//不成立
48 {
49 cout<<0<<endl;
50 continue;
51 }
52
53 cout<<1<<" "<<left.first<<" "<<left.second<<endl;
54 }
55
56 return 0;
57 }