QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#757147 | #9576. Ordainer of Inexorable Judgment | Bicycle_23 | WA | 0ms | 4228kb | C++23 | 1.9kb | 2024-11-17 00:52:45 | 2024-11-17 00:52:47 |
Judging History
你现在查看的是最新测评结果
- [2024-12-23 14:23:26]
- hack成功,自动添加数据
- (/hack/1303)
- [2024-12-06 11:32:56]
- hack成功,自动添加数据
- (/hack/1271)
- [2024-11-17 00:52:45]
- 提交
answer
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
constexpr int maxn = 2e5 + 5;
constexpr double pi = acos(-1);
double f(double x, double y)
{
double res = 0;
if (x == 0)
{
if (y > 0) res = pi / 2;
else res = pi * 3 / 2;
}
else
{
res = atan(y / x);
if (y < 0 || (y == 0 && x < 0)) res += pi / 2;
}
return res;
}
void solve()
{
int n, x0, y0, d, t;
cin >> n >> x0 >> y0 >> d >> t;
vector<int> x(n + 1, 0), y(n + 1, 0);
for (int i = 1; i <= n; i++) cin >> x[i];
for (int i = 1; i <= n; i++) cin >> y[i];
double avex = 0, avey = 0;
for (int i = 1; i <= n; i++) avex += x[i], avey += y[i];
avex /= n; avey /= n;
double st = f(avex, avey);
if (st != 0) st = st - 2 * pi;
vector<double> mx(n + 1, 0), mn(n + 1, 0);
for (int i = 1; i <= n; i++)
{
double dir = f(x[i], y[i]) - st;
if (dir >= 2 * pi) dir -= 2 * pi;
double seita = asin(d / sqrt(x[i] * x[i] + y[i] * y[i]));
mx[i] = dir + seita;
mn[i] = dir - seita;
}
double smx = mx[1], smn = mn[1];
for (int i = 2; i <= n; i++) smx = max(smx, mx[i]), smn = min(smn, mn[i]);
double dir = f(x0, y0) - st;
if (dir >= 2 * pi) dir -= 2 * pi;
int T = t / (2 * pi);
t -= T * 2 * pi;
double ans = T * (smx - smn);
double l, r;
if (dir + t >= 2 * pi)
{
l = max(dir, smn);
r = min(2 * pi, smx);
ans += max(0.0, r - l);
l = smn;
r = min(smx, dir + t - 2 * pi);
ans += max(0.0, r - l);
}
else
{
r = min(dir + t, smx);
l = max(dir, smn);
ans += max(0.0, r - l);
}
printf("%.12lf", ans);
}
signed main()
{
cin.tie(0); cout.tie(0);
ios::sync_with_stdio(0);
int _ = 1;
// cin >> _;
while (_--) solve();
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 4204kb
input:
3 1 0 1 1 1 2 2 1 2 2
output:
1.000000000000
result:
ok found '1.0000000', expected '1.0000000', error '0.0000000'
Test #2:
score: 0
Accepted
time: 0ms
memory: 4228kb
input:
3 1 0 1 2 1 2 2 1 2 2
output:
1.570796326795
result:
ok found '1.5707963', expected '1.5707963', error '0.0000000'
Test #3:
score: 0
Accepted
time: 0ms
memory: 4124kb
input:
3 1 0 1 10000 1 2 2 1 2 2
output:
2500.707752257475
result:
ok found '2500.7077523', expected '2500.7077523', error '0.0000000'
Test #4:
score: -100
Wrong Answer
time: 0ms
memory: 4088kb
input:
3 10000 10000 1 10000 10000 9999 10000 10000 9999 10000
output:
0.225094598099
result:
wrong answer 1st numbers differ - expected: '0.3842413', found: '0.2250946', error = '0.1591467'