제출 #314060

#제출 시각아이디문제언어결과실행 시간메모리
314060shrek12357Mobile (BOI12_mobile)C++14
90 / 100
1080 ms35524 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <map>
#include <set>
#include <climits>
#include <cmath>
#include <fstream>
#include <queue>
#include <stack>
#include <bitset>
using namespace std;
#define ll long long
//cin.tie(0); ios_base::sync_with_stdio(0); 

double n, l;
vector<pair<double, double>> points;

bool check(double mid) {
	double left = 0;
	for (int i = 0; i < points.size(); i++) {
		if (left >= l) {
			return true;
		}
		if (mid < points[i].second) {
			continue;
		}
		double temp = sqrt(mid*mid - points[i].second*points[i].second);
		if (points[i].first - temp <= left) {
			left = max(points[i].first + temp, left);
		}
	}
	return left >= l;
}

int main() {
	cin.tie(0); ios_base::sync_with_stdio(0); 
	cin >> n >> l;
	for (int i = 0; i < n; i++) {
		double a, b;
		cin >> a >> b;
		points.push_back({ a, b });
	}
	double lo = 0;
	double hi = 1e10;
	double ans = 1e10;
	while (hi - lo > 1e-3) {
		double mid = (lo + hi) / 2;
		if (check(mid)) {
			ans = min(ans, mid);
			hi = mid;
		}
		else {
			lo = mid;
		}
	}
	printf("%.7lf\n", ans);
}

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

mobile.cpp: In function 'bool check(double)':
mobile.cpp:22:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<double, double> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   22 |  for (int i = 0; i < points.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...