Skip to content

Commit b6f4e35

Browse files
authored
suggestions
1 parent 47b9610 commit b6f4e35

File tree

1 file changed

+17
-13
lines changed

1 file changed

+17
-13
lines changed

solutions/silver/baltic-12-mobile.mdx

+17-13
Original file line numberDiff line numberDiff line change
@@ -160,8 +160,6 @@ Since we only remove the most recent stations, this motivates the use of a [stac
160160
#include <bits/stdc++.h>
161161
using namespace std;
162162

163-
#define sz(x) (int)x.size()
164-
165163
struct Point {
166164
double x, y;
167165
};
@@ -190,7 +188,7 @@ int main() {
190188
cur.y = abs(cur.y);
191189

192190
// always take the one with the lowest y coord
193-
if (sz(stck) && stck.back().x == cur.x) {
191+
if ((int)stck.size() && stck.back().x == cur.x) {
194192
if (cur.y >= stck.back().y) {
195193
continue;
196194
} else if (cur.y < stck.back().y) {
@@ -199,26 +197,32 @@ int main() {
199197
}
200198

201199
// find "crosses"
202-
while (sz(stck) > 1 && max_point(stck[sz(stck) - 2], stck.back()) >
203-
max_point(stck.back(), cur)) {
200+
while ((int)stck.size() > 1 && max_point(stck[(int)stck.size() - 2], stck.back()) > max_point(stck.back(), cur)) {
204201
stck.pop_back();
205202
}
206203

207204
stck.push_back(cur);
208205
}
209206

210207
// out of bounds
211-
while (sz(stck) > 1 && max_point(stck[0], stck[1]) < 0) stck.pop_front();
212-
while (sz(stck) > 1 && max_point(stck[sz(stck) - 2], stck.back()) > l)
208+
while ((int)stck.size() > 1 && max_point(stck[0], stck[1]) < 0) {
209+
stck.pop_front();
210+
}
211+
212+
while ((int)stck.size() > 1 && max_point(stck[(int)stck.size() - 2], stck.back()) > l) {
213213
stck.pop_back();
214+
}
214215

215216
double ans = 0;
216-
for (int x = 0; x < sz(stck); x++) {
217-
Point left = {(x ? max_point(stck[x], stck[x - 1]) : 0), 0};
218-
Point right = {(x < sz(stck) - 1 ? max_point(stck[x], stck[x + 1]) : l),
219-
0};
220-
221-
if (left.x < 0 || right.x > l || right.x < 0 || left.x > l) continue;
217+
for (int x = 0; x < (int)stck.size(); x++) {
218+
// get critical points stck[x] is in charge of
219+
Point left = {0, 0};
220+
Point right {l, 0};
221+
222+
if (x) { left.x = max_point(stck[x], stck[x - 1]); }
223+
if (x < (int)stck.size() - 1) { right.x = max_point(stck[x], stck[x + 1]); }
224+
225+
if (left.x < 0 || right.x > l || right.x < 0 || left.x > l) { continue; }
222226

223227
ans = max({ans, dist(stck[x], left), dist(stck[x], right)});
224228
}

0 commit comments

Comments
 (0)