QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#718312 | #9576. Ordainer of Inexorable Judgment | EwiGKeiT | WA | 1ms | 3992kb | C++14 | 1.8kb | 2024-11-06 20:14:51 | 2024-11-06 20:14:52 |
Judging History
你现在查看的是最新测评结果
- [2024-12-23 14:23:26]
- hack成功,自动添加数据
- (/hack/1303)
- [2024-12-06 11:32:56]
- hack成功,自动添加数据
- (/hack/1271)
- [2024-11-14 21:58:28]
- hack成功,自动添加数据
- (/hack/1181)
- [2024-11-06 20:14:51]
- 提交
answer
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef long double LB;
const LL MOD=1e9+7;
const LL INF=1e9;
const LB eps=1e-9;
const LB PI=acos(-1);
struct Point
{
LB x,y,ang;
Point operator-(const Point& p) const
{
return {x-p.x,y-p.y};
}
LB operator*(const Point& p) const
{
return x*p.y-y*p.x;
}
} p[105];
int n;
LB X0,Y0,d,t,enter[105],leave[105],ans;
void normalize(LB &x)
{
while (x<0) x+=PI*2;
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin >> n >> X0 >> Y0 >> d >> t;
for (int i=1;i<=n;i++)
{
cin >> p[i].x >> p[i].y;
LB l=sqrt(p[i].x*p[i].x+p[i].y*p[i].y),
ang=atan2(p[i].y,p[i].x);
normalize(ang);
LB ang1=asin(d/l);
enter[i]=ang-ang1;
leave[i]=ang+ang1;
}
Point o={0,0};
int news=0;
for (int i=1;i<=n;i++)
{
bool ok=true;
for (int j=1;j<=n;j++)
if (i!=j && (p[i]-o)*(p[j]-p[i])<0)
{
ok=false;
break;
}
if (ok) news=i;
}
double offset=enter[news];
LB em=PI*2,lm=0;
for (int i=1;i<=n;i++)
{
enter[i]-=offset;
normalize(enter[i]);
leave[i]-=offset;
normalize(leave[i]);
em=min(em,enter[i]);
lm=max(lm,leave[i]);
}
LB start=atan2(Y0,X0)-offset;
normalize(start);
LB em2=max(em,start),
lm2=max(lm,start);
if (t-(em2-start)>0) ans+=min(t-(em2-start),lm2-em2);
t-=PI*2-start;
while (t>em)
{
ans+=min(t-em,lm-em);
t-=PI*2;
}
cout << fixed << setprecision(9) << ans << '\n';
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3936kb
input:
3 1 0 1 1 1 2 2 1 2 2
output:
1.000000000
result:
ok found '1.0000000', expected '1.0000000', error '0.0000000'
Test #2:
score: 0
Accepted
time: 0ms
memory: 3788kb
input:
3 1 0 1 2 1 2 2 1 2 2
output:
1.570796327
result:
ok found '1.5707963', expected '1.5707963', error '0.0000000'
Test #3:
score: 0
Accepted
time: 0ms
memory: 3876kb
input:
3 1 0 1 10000 1 2 2 1 2 2
output:
2500.707752257
result:
ok found '2500.7077523', expected '2500.7077523', error '0.0000000'
Test #4:
score: -100
Wrong Answer
time: 0ms
memory: 3992kb
input:
3 10000 10000 1 10000 10000 9999 10000 10000 9999 10000
output:
0.304681697
result:
wrong answer 1st numbers differ - expected: '0.3842413', found: '0.3046817', error = '0.0795596'