@@ -181,57 +181,57 @@ int main() {
181
181
int n , l;
182
182
cin >> n >> l;
183
183
184
- deque<Point> stck ;
184
+ deque<Point> needed ;
185
185
for (int i = 0 ; i < n ; i ++) {
186
186
Point cur ;
187
187
cin >> cur .x >> cur .y ;
188
188
cur .y = abs (cur .y );
189
189
190
190
// always take the one with the lowest y coord
191
- if ((int )stck .size () && stck .back ().x == cur .x ) {
192
- if (cur .y >= stck .back ().y ) {
191
+ if ((int )needed .size () && needed .back ().x == cur .x ) {
192
+ if (cur .y >= needed .back ().y ) {
193
193
continue ;
194
- } else if (cur .y < stck .back ().y ) {
195
- stck .pop_back ();
194
+ } else if (cur .y < needed .back ().y ) {
195
+ needed .pop_back ();
196
196
}
197
197
}
198
198
199
199
// find "crosses"
200
- while ((int )stck .size () > 1 &&
201
- max_point (stck [(int )stck .size () - 2 ], stck .back ()) >
202
- max_point (stck .back (), cur )) {
203
- stck .pop_back ();
200
+ while ((int )needed .size () > 1 &&
201
+ max_point (needed [(int )needed .size () - 2 ], needed .back ()) >
202
+ max_point (needed .back (), cur )) {
203
+ needed .pop_back ();
204
204
}
205
205
206
- stck .push_back (cur );
206
+ needed .push_back (cur );
207
207
}
208
208
209
209
// out of bounds
210
- while ((int )stck .size() > 1 && max_point(stck [0 ], stck [1 ]) < 0 ) {
211
- stck .pop_front ();
210
+ while ((int )needed .size() > 1 && max_point(needed [0 ], needed [1 ]) < 0 ) {
211
+ needed .pop_front ();
212
212
}
213
213
214
- while ((int )stck .size () > 1 &&
215
- max_point (stck [(int )stck .size () - 2 ], stck .back ()) > l ) {
216
- stck .pop_back ();
214
+ while ((int )needed .size () > 1 &&
215
+ max_point (needed [(int )needed .size () - 2 ], needed .back ()) > l ) {
216
+ needed .pop_back ();
217
217
}
218
218
219
219
double ans = 0 ;
220
- for (int x = 0 ; x < (int )stck .size (); x ++) {
221
- // get critical points stck [x] is in charge of
220
+ for (int x = 0 ; x < (int )needed .size (); x ++) {
221
+ // get critical points needed [x] is in charge of
222
222
Point left = {0 , 0 };
223
223
Point right {l, 0 };
224
224
225
- if (x ) { left .x = max_point (stck [x ], stck [x - 1 ]); }
226
- if (x < (int )stck .size() - 1) {
227
- right .x = max_point (stck [x ], stck [x + 1 ]);
225
+ if (x ) { left .x = max_point (needed [x ], needed [x - 1 ]); }
226
+ if (x < (int )needed .size() - 1) {
227
+ right .x = max_point (needed [x ], needed [x + 1 ]);
228
228
}
229
229
230
230
if (left.x < 0 || right.x > l || right.x < 0 || left.x > l ) {
231
231
continue ;
232
232
}
233
233
234
- ans = max ({ans , dist(stck [x ], left ), dist(stck [x ], right )});
234
+ ans = max ({ans , dist(needed [x ], left ), dist(needed [x ], right )});
235
235
}
236
236
237
237
cout << fixed << setprecision (6 ) << ans << endl ;
0 commit comments