Submission #1298095

#TimeUsernameProblemLanguageResultExecution timeMemory
1298095PhongnvMobile (BOI12_mobile)C++20
0 / 100
1098 ms31632 KiB
/// PhongDang Cs4_uet #include <bits/stdc++.h> using namespace std; #define pb push_back #define fo(i, l, r) for(int i = l; i <= r; i++) #define foi(i, l, r) for(int i = l; i >= r; i--) #define pii pair<int, int> #define mx(x, y) max(x, y) #define fi first #define se second #define in(x) freopen(x, "r", stdin) #define out(x) freopen(x, "w", stdout) #define ll long long #define pob pop_back #define all(x) x.begin(),x.end() #define vii vector<int> #define int long long #define getbit(i, j) ((i >> j) & 1) #define offbit(i, j) (1 << j) ^ i #define onbit(i, j) (1 << j) i #define built(mask) __builtin_popcountll(mask) #define len(s) (int)((s).size()) #define iii pair<int,pair<int, int> > #define fillcharval(a) memset(a, -0x3f, sizeof(a)); #define fillchar(a,x) memset(a, x, sizeof (a)) #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); template <typename T1, typename T2> bool minimize(T1 &a, T2 b) {if (a > b) {a = b; return 1;} return 0;} template <typename T1, typename T2> bool maximize(T1 &a, T2 b) {if (a < b) {a = b; return 1;} return 0;} const int N = 1e6 + 6; const int mod = 1e9 + 7; const int base = 31; const int inf = 1e9; void add(ll &x, const ll y){ x+= y; if(x>=mod) x-= mod; } int n, L; pair<double, double> a[N]; double delta(double r, double dis){ return sqrt(r*r - dis*dis); } pair<double, double> p[N]; bool cmp(pair<double, double> a, pair<double, double> b){ return a.fi < b.fi; } bool check(double x){ fo(i, 1, n){ double val = delta(x, a[i].se); p[i].fi = a[i].fi - val; p[i].se = a[i].fi + val; } sort(p + 1, p + n + 1, cmp); double last = p[1].fi; double endidx = p[1].se; if(last > 0*1.0) return 0; fo(i, 2, n){ if(p[i].fi > endidx) return 0; endidx = max(endidx, p[i].se); } return (endidx >= L*1.0); } signed main() { faster // in("task.inp"); // out("task.out"); // out("task.ans"); cin >> n >> L; fo(i, 1, n) cin >> a[i].fi >> a[i].se; double l = 1; double r = 1.5e9; while(r - l >= 1e-3){ double mid = (r + l)/2; if(check(mid)) r = mid; else l = mid; } cout << fixed << setprecision(4) << l; return 0; }
#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...