제출 #676565

#제출 시각아이디문제언어결과실행 시간메모리
676565QwertyPi생물 실험 (IZhO13_expgorl)C++14
100 / 100
2 ms724 KiB
#include <bits/stdc++.h> #define int long long using namespace std; struct point{ int x, y; }; int dx[256], dy[256]; int dis(point A, point B){ return (A.x - B.x) * (A.x - B.x) + (A.y - B.y) * (A.y - B.y); } long long low = 1LL << 60, high = -(1LL << 60); point L, G, D; void check(point X){ int d = dis(X, D); low = min(low, d); high = max(high, d); } int K; int lim(int x){ return max(min(x, K - 1), 0LL); } int32_t main(){ cin >> K; string s; cin >> s; dx['L'] = -1; dy['L'] = 0; dx['R'] = 1; dy['R'] = 0; dx['F'] = 0; dy['F'] = 1; dx['B'] = 0; dy['B'] = -1; dx['I'] = 0; dy['I'] = 0; int x, y; cin >> x >> y; L = {x, y}; cin >> x >> y; G = {x, y}; D = {L.x - G.x, L.y - G.y}; point X {0, 0}; vector<point> pts; for(auto c : s){ pts.push_back(X); X.x += dx[c]; X.y += dy[c]; } int cx = X.x, cy = X.y; check({cx * K, cy * K}); for(auto p : pts){ check(p); check({p.x + cx * (K - 1), p.y + cy * (K - 1)}); } if(cx * cx + cy * cy != 0){ for(auto p : pts){ int a = cx * cx + cy * cy, b = -2LL * ((D.x - p.x) * cx + (D.y - p.y) * cy), c = (D.x - p.x) * (D.x - p.x) + (D.y - p.y) * (D.y - p.y); int opt = -b / a / 2; auto check_2 = [&p, &cx, &cy](int x){ check({p.x + lim(x) * cx, p.y + lim(x) * cy}); }; check_2(opt - 1); check_2(opt); check_2(opt + 1); } } cout << fixed << setprecision(12) << sqrt(low) << ' ' << sqrt(high) << endl; }

컴파일 시 표준 에러 (stderr) 메시지

expgorl.cpp: In function 'int32_t main()':
expgorl.cpp:44:13: warning: array subscript has type 'char' [-Wchar-subscripts]
   44 |   X.x += dx[c]; X.y += dy[c];
      |             ^
expgorl.cpp:44:27: warning: array subscript has type 'char' [-Wchar-subscripts]
   44 |   X.x += dx[c]; X.y += dy[c];
      |                           ^
expgorl.cpp:55:81: warning: unused variable 'c' [-Wunused-variable]
   55 |    int a = cx * cx + cy * cy, b = -2LL * ((D.x - p.x) * cx + (D.y - p.y) * cy), c = (D.x - p.x) * (D.x - p.x) + (D.y - p.y) * (D.y - p.y);
      |                                                                                 ^
#Verdict Execution timeMemoryGrader output
Fetching results...