Submission #1111206

#TimeUsernameProblemLanguageResultExecution timeMemory
1111206squatrianMobile (BOI12_mobile)C++17
100 / 100
753 ms35292 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; using namespace std; using std::mt19937_64; using std::random_device; using std::uniform_int_distribution; #include <numeric> #define ff first #define ss second #define int long long #define pb push_back #define mp make_pair #define pii pair<int,int> #define vi vector<int> #define mii map<int,int> #define pqb priority_queue<int> #define pqs priority_queue<int,vi,greater<int> > #define setbits(x) __builtin_popcountll(x) #define zrobits(x) __builtin_ctzll(x) #define mod 1000000007 #define inf 1e18 #define ps(x,y) fixed<<setprecision(y)<<x #define mk(arr,n,type) type *arr=new type[n]; #define w(x) int x; cin>>x; while(x--) mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> pbds; void c_p_c() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); //#ifndef ONLINE_JUDGE // freopen("milkvisits.in", "r", stdin); //freopen("milkvisits.out", "w", stdout); //#endif } int dx[] = {1, -1, 0, 0}; int dy[] = {0, 0, 1, -1}; int exp(int x, int n, int m) { if(x == 0 and n == 0) return 1; x %= m; int res = 1; while (n > 0) { if (n % 2 == 1) { res = res * x % m; } x = x * x % m; n /= 2; } return res; } bool check(double mid,vector<pair<int,int>> &v,int k,int n){ double dist = mid*mid; double cur = 0; for(int i = 0 ; i < n; i++){ double disty = v[i].ss*v[i].ss; if(dist-disty >= 0){ double x = (v[i].ff + sqrtl(dist-disty)); double x2 = (v[i].ff - sqrtl(dist-disty)); if(x2 <= cur){ cur = max(x,cur); } } } return (cur >= k); } signed main() { int t=1; c_p_c(); // cin >> t; while(t--){ int n,k; cin >> n >> k; vector<pair<int,int>> v(n); for(int i = 0 ; i < n; i++){ cin >> v[i].ff >> v[i].ss; } double l = 0, r = 1500000000; double ans; while(l <= r){ double mid = l + (r-l)/2; if(check(mid,v,k,n)){ ans = mid; r = mid-0.0001; } else{ l = mid+0.0001; } } cout<<fixed<<setprecision(4); cout<<ans<<endl; } 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...