Submission #417607

#TimeUsernameProblemLanguageResultExecution timeMemory
417607jackkkkMobile (BOI12_mobile)C++11
100 / 100
899 ms35424 KiB
#include <stdio.h>
#include <iomanip>
#include <iostream>
#include <string>
#include <vector>
#include <queue>
#include <map>
#include <array>
#include <deque>
#include <unordered_map>
#include <unordered_set>
#include <set>
#include <algorithm>
#include <stdlib.h>
#include <math.h>
#include <list>
#include <float.h>
#include <climits>
using namespace std;

void quit(){
    cout.flush();
    exit(0);
}

int n, l;
vector <pair<double, double>> towers;
bool good(double dist){
    //get_intervals
	double max_good = 0;
    for(const auto &tower : towers){
        if(abs(tower.second)>=dist){
            continue;
        }
        double range = sqrt((dist*dist)-(tower.second*tower.second));
        double left = tower.first-range;
		double right = tower.first+range;
		if (left > max_good) {
			continue;
		}
		max_good = max(max_good, right);
    }
    return max_good >= l;
}
int main() {
	//freopen("qwer.in", "r", stdin);
	//freopen("qwer.out", "w", stdout);
	ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	cin >> n >> l;
	towers.resize(n);
	for(int i = 0; i < n; i++){
	    cin >> towers[i].first >> towers[i].second;
	}
	
	double s = 0, e = 3*1e10, mid;
    while(e-s>0.0005){
        mid = (s+e)/2;
        if(good(mid)){
            e=mid;
        }
        else{
            s=mid;
        }
    }
    cout << fixed << setprecision(10) <<e << "\n";
	
	
	quit();
}
#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...