1
1
class Solution {
2
2
public:
3
3
int robotSim (vector<int >& commands, vector<vector<int >>& obstacles) {
4
-
5
4
set<pair<int , int >> ob;
6
5
for (auto & i : obstacles) {
7
6
ob.insert ({i[0 ], i[1 ]});
8
- ob.insert ({i[1 ], i[0 ]});
9
7
}
10
8
11
9
auto haveOb = [&](int x, int y) {
12
10
return (ob.find ({x, y}) != ob.end ());
13
11
};
14
12
15
-
16
13
auto fixDir = [&](int x, char dir) {
17
14
if (x == -1 ) {
18
15
if (dir == ' u' ) dir = ' r' ;
19
16
else if (dir == ' r' ) dir = ' d' ;
20
17
else if (dir == ' d' ) dir = ' l' ;
21
18
else if (dir == ' l' ) dir = ' u' ;
22
- }
23
- if (x == -2 ) {
19
+ } else if (x == -2 ) {
24
20
if (dir == ' u' ) dir = ' l' ;
25
21
else if (dir == ' l' ) dir = ' d' ;
26
22
else if (dir == ' d' ) dir = ' r' ;
@@ -29,7 +25,6 @@ class Solution {
29
25
return dir;
30
26
};
31
27
32
-
33
28
auto getMx = [&](int x, int y) {
34
29
return x * x + y * y;
35
30
};
@@ -42,47 +37,46 @@ class Solution {
42
37
dir = fixDir (i, dir);
43
38
continue ;
44
39
}
45
- cout << x << ' ' << y << ' ' << dir << endl;
46
- // cout << dir << ' ' ;
40
+
41
+ int cur = i ;
47
42
if (dir == ' u' ) {
48
- while (i) {
43
+ while (cur) {
44
+ y++, cur--;
49
45
if (haveOb (x, y)) {
50
- y--; break ;
46
+ y--;
47
+ break ;
51
48
}
52
- y++, i--;
53
49
mx = max (mx, getMx (x, y));
54
- // cout << mx << ' ';
55
50
}
56
- }
57
- if (dir == ' r ' ) {
58
- while (i) {
51
+ } else if (dir == ' r ' ) {
52
+ while (cur ) {
53
+ x++, cur--;
59
54
if (haveOb (x, y)) {
60
- x--; break ;
55
+ x--;
56
+ break ;
61
57
}
62
- x++, i--;
63
58
mx = max (mx, getMx (x, y));
64
- // cout << mx << ' ';
65
59
}
66
- }
67
- if (dir == ' d ' ) {
68
- while (i) {
60
+ } else if (dir == ' d ' ) {
61
+ while (cur ) {
62
+ y--, cur--;
69
63
if (haveOb (x, y)) {
70
- y++; break ;
64
+ y++;
65
+ break ;
71
66
}
72
- y--, i--;
73
67
mx = max (mx, getMx (x, y));
74
68
}
75
- }
76
- if (dir == ' l ' ) {
77
- while (i) {
69
+ } else if (dir == ' l ' ) {
70
+ while (cur ) {
71
+ x--, cur--;
78
72
if (haveOb (x, y)) {
79
- x++; break ;
73
+ x++;
74
+ break ;
80
75
}
81
- x--, i--;
82
76
mx = max (mx, getMx (x, y));
83
77
}
84
78
}
85
79
}
86
80
return mx;
87
81
}
88
- };
82
+ };
0 commit comments