제출 #684206

#제출 시각아이디문제언어결과실행 시간메모리
684206Brownbear2710Mobile (BOI12_mobile)C++14
0 / 100
1096 ms81152 KiB
/* So, which of the favours of your Lord would you deny? */ #include <bits/stdc++.h> #ifdef ADIB_PC #include "dbg.h" #else #define dbg(...) #endif using namespace std; using ll = long long; using ld = long double; #define fast_IO ios_base::sync_with_stdio(0), cin.tie(NULL); #define show(x) cout << #x << ": " << x << endl; #define all(x) x.begin(), x.end() #define MAXN 200005 struct point { ld x, y; point(){} point(ld _x, ld _y) : x(_x), y(_y) {} bool operator<(point &p) const { if(x != p.x) x < p.x; return y < p.y; } }; vector<point> pts; ld l; bool can_cover(ld d) { vector<pair<ld,ld>> seg; for(int i = 0; i < pts.size(); i++) { auto [x, y] = pts[i]; if(d < y) continue; ld dx = sqrt(d*d-y*y); ld left = max((ld)0, x - dx), right = min(x + dx, l); seg.emplace_back(left, right); } double lf = 0; for(int i = 0; i < seg.size(); i++) { if(seg[i].first > l or seg[i].second < 0) continue; if(seg[i].first <= lf) lf = seg[i].second; } return lf >= l; } int main() { fast_IO; int T = 1; // cin >> T; while(T--) { int n; cin >> n >> l; for(int i = 0 ; i < n; i++) { point p; cin >> p.x >> p.y; p.x = abs(p.x), p.y = abs(p.y); if(pts.size() == 0 || pts.back().x != p.x) pts.push_back(p); } ld ans = 1e15, lo = 0, hi = 2e9; while(abs(lo-hi) > 0.0001) { ld mid = (lo + hi)/2; if(can_cover(mid)) { ans = mid; hi = mid; } else lo = mid; } cout << fixed << setprecision(6) << ans << "\n"; } return 0; }

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

mobile.cpp: In member function 'bool point::operator<(point&) const':
mobile.cpp:30:24: warning: statement has no effect [-Wunused-value]
   30 |         if(x != p.x) x < p.x;
      |                      ~~^~~~~
mobile.cpp: In function 'bool can_cover(ld)':
mobile.cpp:41:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<point>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   41 |     for(int i = 0; i < pts.size(); i++)
      |                    ~~^~~~~~~~~~~~
mobile.cpp:43:14: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   43 |         auto [x, y] = pts[i];
      |              ^
mobile.cpp:51:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long double, long double> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   51 |     for(int i = 0; i < seg.size(); 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...