답안 #533040

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
533040 2022-03-04T14:37:11 Z Stormersyle Mobile (BOI12_mobile) C++14
0 / 100
1000 ms 56924 KB
#include <iostream>
#include <bits/stdc++.h> 
#include <array>
#include <fstream>
#include <string>
#include <algorithm>
#include <cmath>
#include <sstream>  
#include <iomanip>
using namespace std;
using ll=long long;

double N, L;
vector<pair<double, double>> c; //{x, y}

bool check(double R){ //checks to see if max distance >=R is possible; find last true
  vector<pair<double, double>> I;
  for (pair<double, double> coord: c){
    double x=coord.first, y=coord.second;
    I.push_back({x-sqrt(R*R-y*y), x+sqrt(R*R-y*y)});
  }
  sort(I.begin(), I.end());
  // for (auto p: I) cout<<"("<<p.first<<" "<<p.second<<")  ";
  // cout<<"\n";
  int s=0;
  double M=-1000000000; //M=max endpoint so far
  while (I[s].first<0) M=max(M, I[s].second), s++;
  for (int i=s; i<N; i++){ //since I.size()==N
    if (I[i].first>M) return true;
    M=max(M, I[i].second);
  }
  if (L>M) return true;
  return false;
}

int main() {
  cin>>N>>L;
  for (int i=0; i<N; i++){
    double x, y;
    cin>>x>>y;
    c.push_back({x, y});
  }

  ll lo=0, hi=1000000000000000;
	lo--;
	while (lo < hi) {
		ll mid = lo + (hi - lo + 1) / 2;
    double R=mid/1000000.0;
		if (check(R)) {
			lo = mid;
		} else {
			hi = mid - 1;
		}
	}
	cout<<setprecision(6)<<lo/1000000.0;
  // cout<<check(5);
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 208 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 208 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 8 ms 436 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 20 ms 628 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 20 ms 628 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 14 ms 640 KB Output is correct
2 Incorrect 14 ms 660 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 321 ms 5836 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 353 ms 5572 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 266 ms 5844 KB Output is correct
2 Incorrect 356 ms 6100 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 375 ms 7164 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 301 ms 7080 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1046 ms 28620 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1029 ms 32584 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1008 ms 40928 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1048 ms 45424 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1067 ms 44812 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1066 ms 50288 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1038 ms 49004 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1025 ms 54976 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1037 ms 56924 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1006 ms 30636 KB Time limit exceeded
2 Halted 0 ms 0 KB -