Submission #684149

#TimeUsernameProblemLanguageResultExecution timeMemory
684149ThisWasUnplannedMobile (BOI12_mobile)C++17
0 / 100
745 ms33316 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-4); 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; if(!towers.size() || towers.back().first != x) towers.push_back({x, y}); } LD res = -1; // for(int i = 0 ; i < towers.size()-1 ; i++) // { // if(towers[i].first < 0 && towers[i+1].first > 0) // { // res = max(res, distance({0, 0}, towers[i])); // res = max(res, distance({0, 0}, towers[i+1])); // } // if(towers[i].first < l && towers[i+1].first > l) // { // res = max(res, distance({l, 0}, towers[i])); // res = max(res, distance({l, 0}, towers[i+1])); // } // } // if(res != -1) res = sqrt(res); for(int i = 0 ; i < towers.size()-1 ; i++) { LD point = ternary(towers[i], towers[i+1]); res = max({res, distance({point, 0}, towers[i]), distance({point, 0}, towers[i+1])}); } 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; }

Compilation message (stderr)

mobile.cpp: In function 'long long int solve(long long int)':
mobile.cpp:87: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]
   87 |     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...