Submission #67574

#TimeUsernameProblemLanguageResultExecution timeMemory
67574thebesMobile (BOI12_mobile)C++14
0 / 100
1060 ms16364 KiB
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("sse,sse2,ssse3,sse3,sse4,popcnt,avx,mmx,abm,tune=native")
#include <bits/stdc++.h>
#define sq(x) ((x)*(x))
using namespace std;

#define double long double
#define int long long
const int MN = 1e6+6;
double lo, hi = 1e12, eps = 1e-6;
int N, M, i, j;
pair<int,int> pnt[MN];
inline bool check(double d){
	double mx = 0;
	for(int i=1;i<=N;i++){
		if(abs(pnt[i].second)>d) continue;
		double dx=sqrt(sq(d)-sq(pnt[i].second));
		if(pnt[i].first-dx<=mx) mx=max(mx,pnt[i].first+dx);
		else return 0;
	}
	return mx>=M; 
}

signed main(){
	for(scanf("%lld%lld",&N,&M),i=1;i<=N;i++)
		scanf("%lld%lld",&pnt[i].first,&pnt[i].second);
	sort(pnt+1,pnt+N+1,[](pair<int,int>i,pair<int,int>j){return i.first<j.first;});
	while(lo+eps<hi){
		double m = (lo+hi)/2.0;
		if(check(m)) hi=m;
		else lo=m+eps;
	}
	printf("%.6lf\n",lo);
	return 0;
}

Compilation message (stderr)

mobile.cpp: In function 'int main()':
mobile.cpp:34:21: warning: format '%lf' expects argument of type 'double', but argument 2 has type 'long double' [-Wformat=]
  printf("%.6lf\n",lo);
                     ^
mobile.cpp:26:29: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  for(scanf("%lld%lld",&N,&M),i=1;i<=N;i++)
      ~~~~~~~~~~~~~~~~~~~~~~~^~~~
mobile.cpp:27:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%lld%lld",&pnt[i].first,&pnt[i].second);
   ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#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...