# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
3992 | joonas | Jogging (kriii1_J) | C++98 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <stdio.h>
#include <utility>
#include <algorithm>
#include <vector>
#include <cmath>
std::vector< std::pair<int,int> > N;
int M;
template<template <typename> class P = std::less >
struct compare_pair_second {
template<class T1, class T2> bool operator()(const std::pair<T1,T2>&left, const std::pair<T1,T2>&right) {
return P<T2>()(left.second, right.second);
}
};
int main(){
int i,j, n, m;
scanf("%d %d ", &n, &m);
for(i=0; i < n; ++i){
int nx, ny;
scanf("%d %d ", &nx, &ny);
N.push_back( std::pair<int,int>(nx, ny) );
}
std::sort( N.begin(), N.end(), compare_pair_second<std::greater>() );
for(i=0; i < m; ++i){
scanf("%d", &M);
double rad=0.0;
for(j=0; j < n; ++j){
if( N[j].first > M ){
double dw = N[j].first-M;
double ds = sqrt((dw*dw)+((N[j].second)*(N[j].second)));
double _r = asin(N[j].second/ds);
if( _r > rad ) rad = _r;
} else if( n >= 5 && j > n/2 ) break;
}
printf("%.7f\n", rad);
}
return 0;
}