답안 #56165

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
56165 2018-07-10T06:50:49 Z 정원준(#1583) Mobile (BOI12_mobile) C++11
100 / 100
677 ms 32116 KB
#include <bits/stdc++.h>
#define L long long

using namespace std;

L n,l;

struct S{
	L x,y;
}a[1000010];

bool operator<(S a,S b){
	if(a.x==b.x) return a.y>b.y;
	return a.x<b.x;
}

S st[1000010];
L top;

double cross(S a,S b){
	return (double)(b.x*b.x-a.x*a.x+
					 b.y*b.y-a.y*a.y)/(2*(b.x-a.x));

}

bool shellpop(S temp){
	if(top<2) return 0;
	double cross1=cross(st[top],st[top-1]);
	top++;
	st[top]=temp;
	double cross2=cross(st[top],st[top-1]);
	top--;
	return cross2<cross1;
}

double ab(double x){
	return x>0?x:-x;
}

double ans;

int main()
{
	scanf("%lld %lld",&n,&l);
	L i;
	for(i=1;i<=n;i++)
	{
		scanf("%lld %lld",&a[i].x,&a[i].y);
		if(a[i].y<0) a[i].y*=-1;
	}
	sort(a+1,a+n+1);
	for(i=1;i<=n;i++)
	{
		if(i<n&&a[i].x==a[i+1].x) continue;
		while(shellpop(a[i])) top--;
		top++;
		st[top]=a[i];
	}
	/*for(i=1;i<=top;i++)
	{
		printf("%lld %lld\n",st[i].x,st[i].y);
	}*/
	for(i=1;i<top;i++)
	{
		double temp=cross(st[i+1],st[i]);
		double temp2=sqrt((st[i].x-temp)*(st[i].x-temp)+st[i].y*st[i].y);
		double temp3=sqrt((st[i+1].x-temp)*(st[i+1].x-temp)+st[i+1].y*st[i+1].y);
		//if(ab(temp2-temp3)>0.01) while(1);
		if(0<=temp&&temp<=l) 
			ans=max(ans,temp2);
		//printf("%lf %lf %lf\n",temp,temp2,temp3);
	}
	double mi=1e12;
	for(i=1;i<=n;i++)
	{
		mi=min(mi,sqrt(a[i].x*a[i].x+a[i].y*a[i].y));
	}
	ans=max(ans,mi);
	
	mi=1e12;
	for(i=1;i<=n;i++)
	{
		mi=min(mi,sqrt((a[i].x-l)*(a[i].x-l)+a[i].y*a[i].y));
	}
	ans=max(ans,mi);
	printf("%lf",ans);
}

Compilation message

mobile.cpp: In function 'int main()':
mobile.cpp:67:10: warning: unused variable 'temp3' [-Wunused-variable]
   double temp3=sqrt((st[i+1].x-temp)*(st[i+1].x-temp)+st[i+1].y*st[i+1].y);
          ^~~~~
mobile.cpp:44:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%lld %lld",&n,&l);
  ~~~~~^~~~~~~~~~~~~~~~~~~
mobile.cpp:48:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%lld %lld",&a[i].x,&a[i].y);
   ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 248 KB Output is correct
2 Correct 2 ms 484 KB Output is correct
3 Correct 3 ms 484 KB Output is correct
4 Correct 3 ms 484 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 484 KB Output is correct
2 Correct 3 ms 524 KB Output is correct
3 Correct 3 ms 548 KB Output is correct
4 Correct 2 ms 592 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 596 KB Output is correct
2 Correct 4 ms 596 KB Output is correct
3 Correct 4 ms 596 KB Output is correct
4 Correct 4 ms 596 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 596 KB Output is correct
2 Correct 5 ms 596 KB Output is correct
3 Correct 5 ms 596 KB Output is correct
4 Correct 6 ms 596 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 596 KB Output is correct
2 Correct 5 ms 596 KB Output is correct
3 Correct 5 ms 624 KB Output is correct
4 Correct 6 ms 796 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 6 ms 796 KB Output is correct
2 Correct 4 ms 796 KB Output is correct
3 Correct 7 ms 796 KB Output is correct
4 Correct 6 ms 796 KB Output is correct
5 Correct 5 ms 796 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 29 ms 1900 KB Output is correct
2 Correct 48 ms 1900 KB Output is correct
3 Correct 31 ms 1900 KB Output is correct
4 Correct 37 ms 1900 KB Output is correct
5 Correct 21 ms 1900 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 43 ms 1900 KB Output is correct
2 Correct 32 ms 1900 KB Output is correct
3 Correct 42 ms 1900 KB Output is correct
4 Correct 39 ms 1900 KB Output is correct
5 Correct 48 ms 1960 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 42 ms 3284 KB Output is correct
2 Correct 35 ms 3284 KB Output is correct
3 Correct 33 ms 3284 KB Output is correct
4 Correct 74 ms 3284 KB Output is correct
5 Correct 42 ms 3284 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 50 ms 3284 KB Output is correct
2 Correct 41 ms 3284 KB Output is correct
3 Correct 53 ms 3284 KB Output is correct
4 Correct 75 ms 3284 KB Output is correct
5 Correct 53 ms 3284 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 47 ms 3284 KB Output is correct
2 Correct 43 ms 3284 KB Output is correct
3 Correct 45 ms 3284 KB Output is correct
4 Correct 72 ms 3284 KB Output is correct
5 Correct 48 ms 3284 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 245 ms 16300 KB Output is correct
2 Correct 217 ms 16300 KB Output is correct
3 Correct 231 ms 16300 KB Output is correct
4 Correct 316 ms 16300 KB Output is correct
5 Correct 272 ms 16300 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 241 ms 16300 KB Output is correct
2 Correct 223 ms 16300 KB Output is correct
3 Correct 241 ms 16300 KB Output is correct
4 Correct 326 ms 16300 KB Output is correct
5 Correct 281 ms 16300 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 228 ms 19352 KB Output is correct
2 Correct 275 ms 19352 KB Output is correct
3 Correct 306 ms 19352 KB Output is correct
4 Correct 371 ms 19352 KB Output is correct
5 Correct 332 ms 19352 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 337 ms 19352 KB Output is correct
2 Correct 275 ms 19352 KB Output is correct
3 Correct 266 ms 19352 KB Output is correct
4 Correct 337 ms 19352 KB Output is correct
5 Correct 282 ms 19352 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 268 ms 22516 KB Output is correct
2 Correct 332 ms 22516 KB Output is correct
3 Correct 355 ms 22516 KB Output is correct
4 Correct 406 ms 22516 KB Output is correct
5 Correct 367 ms 22516 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 411 ms 22516 KB Output is correct
2 Correct 323 ms 22516 KB Output is correct
3 Correct 291 ms 22516 KB Output is correct
4 Correct 444 ms 22516 KB Output is correct
5 Correct 384 ms 22516 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 338 ms 25864 KB Output is correct
2 Correct 336 ms 25864 KB Output is correct
3 Correct 364 ms 25864 KB Output is correct
4 Correct 451 ms 25864 KB Output is correct
5 Correct 382 ms 25864 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 389 ms 25864 KB Output is correct
2 Correct 405 ms 25864 KB Output is correct
3 Correct 362 ms 25864 KB Output is correct
4 Correct 560 ms 25864 KB Output is correct
5 Correct 411 ms 25864 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 398 ms 32116 KB Output is correct
2 Correct 439 ms 32116 KB Output is correct
3 Correct 521 ms 32116 KB Output is correct
4 Correct 595 ms 32116 KB Output is correct
5 Correct 551 ms 32116 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 374 ms 32116 KB Output is correct
2 Correct 365 ms 32116 KB Output is correct
3 Correct 286 ms 32116 KB Output is correct
4 Correct 677 ms 32116 KB Output is correct
5 Correct 379 ms 32116 KB Output is correct