제출 #684184

#제출 시각아이디문제언어결과실행 시간메모리
684184ThisWasUnplannedMobile (BOI12_mobile)C++17
0 / 100
915 ms33288 KiB
/* ⡆⣐⢕⢕⢕⢕⢕⢕⢕⢕⠅⢗⢕⢕⢕⢕⢕⢕⢕⠕⠕⢕⢕⢕⢕⢕⢕⢕⢕⢕ ⢐⢕⢕⢕⢕⢕⣕⢕⢕⠕⠁⢕⢕⢕⢕⢕⢕⢕⢕⠅⡄⢕⢕⢕⢕⢕⢕⢕⢕⢕ ⢕⢕⢕⢕⢕⠅⢗⢕⠕⣠⠄⣗⢕⢕⠕⢕⢕⢕⠕⢠⣿⠐⢕⢕⢕⠑⢕⢕⠵⢕ ⢕⢕⢕⢕⠁⢜⠕⢁⣴⣿⡇⢓⢕⢵⢐⢕⢕⠕⢁⣾⢿⣧⠑⢕⢕⠄⢑⢕⠅⢕ ⢕⢕⠵⢁⠔⢁⣤⣤⣶⣶⣶⡐⣕⢽⠐⢕⠕⣡⣾⣶⣶⣶⣤⡁⢓⢕⠄⢑⢅⢑ ⠍⣧⠄⣶⣾⣿⣿⣿⣿⣿⣿⣷⣔⢕⢄⢡⣾⣿⣿⣿⣿⣿⣿⣿⣦⡑⢕⢤⠱⢐ ⢠⢕⠅⣾⣿⠋⢿⣿⣿⣿⠉⣿⣿⣷⣦⣶⣽⣿⣿⠈⣿⣿⣿⣿⠏⢹⣷⣷⡅⢐ ⣔⢕⢥⢻⣿⡀⠈⠛⠛⠁⢠⣿⣿⣿⣿⣿⣿⣿⣿⡀⠈⠛⠛⠁⠄⣼⣿⣿⡇⢔ ⢕⢕⢽⢸⢟⢟⢖⢖⢤⣶⡟⢻⣿⡿⠻⣿⣿⡟⢀⣿⣦⢤⢤⢔⢞⢿⢿⣿⠁⢕ ⢕⢕⠅⣐⢕⢕⢕⢕⢕⣿⣿⡄⠛⢀⣦⠈⠛⢁⣼⣿⢗⢕⢕⢕⢕⢕⢕⡏⣘⢕ ⢕⢕⠅⢓⣕⣕⣕⣕⣵⣿⣿⣿⣾⣿⣿⣿⣿⣿⣿⣿⣷⣕⢕⢕⢕⢕⡵⢀⢕⢕ ⢑⢕⠃⡈⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢃⢕⢕⢕ ⣆⢕⠄⢱⣄⠛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⢁⢕⢕⠕⢁ ⣿⣦⡀⣿⣿⣷⣶⣬⣍⣛⣛⣛⡛⠿⠿⠿⠛⠛⢛⣛⣉⣭⣤⣂⢜⠕⢑⣡⣴⣿ */ #include <bits/stdc++.h> using namespace std; typedef long long LL; typedef long double LD; #define MAX 100 #define pi acos(-1) #define whatis(x) cout << #x << " is " << x << "\n"; #define all(x) x.begin(), x.end() #define endl "\n" #define DEB cout << "TESTING" NL #define TESTS int test; cin>>test; for(int kase = 1 ; kase <= test ; kase++) solve(kase); #define CASEOUT cout << "Case " << testcase << ": " << #define YESNO cout << (possible? "YES\n" : "NO\n"); // #define YES cout << "YES\n"; // #define NO cout << "NO\n"; #define int long long #define pii pair<int,int> LD distance(pair<LD, LD> a, pair<LD, LD> b) { return (a.first - b.first) * (a.first - b.first) + (a.second - b.second) * (a.second - b.second); } LD ternary(pair<LD, LD> a, pair<LD, LD> b) { LD low = a.first, high = b.first; LD mid1, mid2, mid3; do{ mid2 = low + (high - low)/2; mid1 = low + (mid2 - low)/2; mid3 = mid2 + (high - mid2)/2; if(min(distance({mid1, 0}, a), distance({mid1, 0}, b)) < min(distance({mid3, 0}, a), distance({mid3, 0}, b))) { low = mid2; } else high = mid2; } while(abs(mid2 - mid3) > 1e-6); return mid2; } int solve(int testcase) { int n; LD l; cin >> n >> l; vector <pair <LD, LD>> towers; for(int i = 0; i < n; i++) { LD x, y; cin >> x >> y; towers.push_back({x, y}); } LD res = -1, start_point = LDBL_MAX, end_point = LDBL_MAX; // cout << start_point << " " << end_point << endl; for(int i = 0 ; i < towers.size() ; i++) { start_point = min(start_point, distance({0, 0}, towers[i])); end_point = min(end_point, distance({l, 0}, towers[i])); } for(int i = 0 ; i < towers.size()-1 ; i++) { LD point = ternary(towers[i], towers[i+1]); if(point > -1 * (1e-5) && point < l + 1e-5) res = max({res, distance({point, 0}, towers[i]), distance({point, 0}, towers[i+1])}); } res = max({res, sqrt(end_point), sqrt(start_point)}); cout << fixed << setprecision(6) << sqrt(res) << endl; return 0; } signed main() { //freopen("input.txt", "r", stdin); //freopen("output.txt", "w", stdout); ios_base::sync_with_stdio(false); cin.tie(NULL); //cout.tie(NULL); solve(0); // TESTS return 0; }

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

mobile.cpp: In function 'long long int solve(long long int)':
mobile.cpp:73:23: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long double, long double> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   73 |     for(int i = 0 ; i < towers.size() ; i++)
      |                     ~~^~~~~~~~~~~~~~~
mobile.cpp:78:23: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long double, long double> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   78 |     for(int i = 0 ; i < towers.size()-1 ; i++)
      |                     ~~^~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...