Submission #1279895

#TimeUsernameProblemLanguageResultExecution timeMemory
1279895goldenbullMobile (BOI12_mobile)C++17
13 / 100
1097 ms48224 KiB
#include <bits/stdc++.h> #define TIME (1.0 * clock() / CLOCKS_PER_SEC) #define FOR(i,a,b) for (int i=(a),_b=(b); i<=_b; i++) #define FOD(i,a,b) for (int i=(a),_b=(b); i>=_b; i--) #define FUL(n) (((1LL)<<(n))-1) #define BIT(n,k) (((n)>>(k))&1) #define fi first #define se second #define pb push_back #define all(x) (x).begin(), (x).end() #define sz(x) ((int)(x).size()) #define sqr(x) (1LL * (x) * (x)) using namespace std; using ll = long long; using ull = uint64_t; using ld = double; template<class T> using ve = vector<T>; using vi = vector<int>; using vll = vector<ll>; using ii = pair<int,int>; using pll = pair<ll,ll>; using pld = pair<ld,ld>; const char el = '\n'; template<class T> void print(T a[], int n) { FOR(i,0,n-1) cerr << a[i] << ' '; cerr << el; } template<class T, class U> bool maxi(T& x, const U& y) { return y>x?(x=y,1):0; } template<class T, class U> bool mini(T& x, const U& y) { return y<x?(x=y,1):0; } const int maxn = 1e6+7; const ld eps = 1e-6; int n; ll L; pll p[maxn]; pld coverage(ll x, ll y, ld r) { if (r < abs(y)) exit(1); ld s = abs(sqrt(r*r - 1.0*y*y)); return {1.0*x - s, 1.0*x + s}; } bool ok(ld k) { ve<pld> lr; FOR(i,1,n) if (abs(p[i].se) <= k) { lr.pb(coverage(p[i].fi, p[i].se, k)); } if (!sz(lr)) return false; sort(all(lr)); ld cl = lr[0].fi, cr = lr[0].se; FOR(i,1,sz(lr)-1) { if (lr[i].fi > cr) return false; maxi(cr, lr[i].se); } return (cl <= 0) && (cr >= L); } void solve() { cin>>n>>L; FOR(i,1,n) cin>>p[i].fi>>p[i].se; ld l = 0, r = 3e9+7; while (abs(l-r) >= eps) { ld mid = (l+r)/2; if (ok(mid)) r = mid; else l = mid; } cout << fixed << setprecision(6); cout << l; } #define IN ".inp" #define OUT ".out" //#define NAME "test" signed main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); #ifndef NAME if (fopen("test.inp", "r")) freopen("test.inp", "r", stdin); #endif #ifdef NAME freopen(NAME IN, "r", stdin); freopen(NAME OUT, "w", stdout); #endif int tt=1; // cin>>tt; while (tt--) solve(); cerr << el << "Time elapsed: " << TIME << " s"; return 0; }

Compilation message (stderr)

mobile.cpp: In function 'int main()':
mobile.cpp:77:52: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   77 |                 if (fopen("test.inp", "r")) freopen("test.inp", "r", stdin);
      |                                             ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
#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...