답안 #56136

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
56136 2018-07-10T05:33:54 Z 정원준(#1583) Mobile (BOI12_mobile) C++11
95 / 100
1000 ms 32028 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: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 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 3 ms 556 KB Output is correct
4 Correct 3 ms 556 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 556 KB Output is correct
2 Correct 3 ms 636 KB Output is correct
3 Correct 2 ms 636 KB Output is correct
4 Correct 3 ms 636 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 636 KB Output is correct
2 Correct 4 ms 636 KB Output is correct
3 Correct 4 ms 636 KB Output is correct
4 Correct 3 ms 636 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 636 KB Output is correct
2 Correct 5 ms 668 KB Output is correct
3 Correct 5 ms 668 KB Output is correct
4 Correct 5 ms 668 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 668 KB Output is correct
2 Correct 3 ms 668 KB Output is correct
3 Correct 3 ms 668 KB Output is correct
4 Correct 5 ms 668 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 668 KB Output is correct
2 Correct 4 ms 668 KB Output is correct
3 Correct 6 ms 668 KB Output is correct
4 Correct 5 ms 804 KB Output is correct
5 Correct 5 ms 804 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 28 ms 1916 KB Output is correct
2 Correct 41 ms 1916 KB Output is correct
3 Correct 21 ms 1916 KB Output is correct
4 Correct 36 ms 1916 KB Output is correct
5 Correct 18 ms 1916 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 29 ms 1916 KB Output is correct
2 Correct 27 ms 1916 KB Output is correct
3 Correct 33 ms 1916 KB Output is correct
4 Correct 31 ms 1916 KB Output is correct
5 Correct 44 ms 1948 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 29 ms 3324 KB Output is correct
2 Correct 32 ms 3324 KB Output is correct
3 Correct 39 ms 3324 KB Output is correct
4 Correct 78 ms 3324 KB Output is correct
5 Correct 30 ms 3324 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 44 ms 3324 KB Output is correct
2 Correct 35 ms 3324 KB Output is correct
3 Correct 30 ms 3324 KB Output is correct
4 Correct 55 ms 3324 KB Output is correct
5 Correct 65 ms 3324 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 52 ms 3324 KB Output is correct
2 Correct 42 ms 3324 KB Output is correct
3 Correct 55 ms 3324 KB Output is correct
4 Correct 58 ms 3324 KB Output is correct
5 Correct 58 ms 3324 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 198 ms 16280 KB Output is correct
2 Correct 250 ms 16280 KB Output is correct
3 Correct 196 ms 16280 KB Output is correct
4 Correct 246 ms 16280 KB Output is correct
5 Correct 209 ms 16280 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 225 ms 16280 KB Output is correct
2 Correct 188 ms 16280 KB Output is correct
3 Correct 167 ms 16280 KB Output is correct
4 Correct 268 ms 16280 KB Output is correct
5 Correct 220 ms 16280 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 205 ms 19508 KB Output is correct
2 Correct 256 ms 19508 KB Output is correct
3 Correct 255 ms 19508 KB Output is correct
4 Correct 402 ms 19508 KB Output is correct
5 Correct 240 ms 19508 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 346 ms 19508 KB Output is correct
2 Correct 245 ms 19508 KB Output is correct
3 Correct 175 ms 19508 KB Output is correct
4 Correct 269 ms 19508 KB Output is correct
5 Correct 243 ms 19508 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 250 ms 22488 KB Output is correct
2 Correct 316 ms 22488 KB Output is correct
3 Correct 258 ms 22488 KB Output is correct
4 Correct 307 ms 22488 KB Output is correct
5 Correct 283 ms 22488 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 299 ms 22488 KB Output is correct
2 Correct 304 ms 22488 KB Output is correct
3 Correct 226 ms 22488 KB Output is correct
4 Correct 343 ms 22488 KB Output is correct
5 Correct 367 ms 22488 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 252 ms 25596 KB Output is correct
2 Correct 285 ms 25596 KB Output is correct
3 Correct 284 ms 25596 KB Output is correct
4 Correct 354 ms 25596 KB Output is correct
5 Correct 323 ms 25596 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 326 ms 25596 KB Output is correct
2 Correct 283 ms 25596 KB Output is correct
3 Correct 249 ms 25596 KB Output is correct
4 Correct 356 ms 25596 KB Output is correct
5 Correct 320 ms 25596 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 347 ms 32028 KB Output is correct
2 Correct 542 ms 32028 KB Output is correct
3 Correct 516 ms 32028 KB Output is correct
4 Execution timed out 1093 ms 32028 KB Time limit exceeded
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 377 ms 32028 KB Output is correct
2 Correct 364 ms 32028 KB Output is correct
3 Correct 366 ms 32028 KB Output is correct
4 Correct 489 ms 32028 KB Output is correct
5 Correct 447 ms 32028 KB Output is correct