QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#721040#9576. Ordainer of Inexorable Judgmentucup-team902#WA 0ms4140kbC++232.3kb2024-11-07 15:02:362024-11-07 15:02:42

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-07 15:02:42]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:4140kb
  • [2024-11-07 15:02:36]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
#define cs const
#define re register
#define pb push_back
#define y0 sxxxxx
#define pii pair<int, int>
#define ll long long
#define fi first
#define se second
#define bg begin

template <typename tp>
inline void chemx(tp &a, tp b) { (a < b) ? (a = b) : 0; }
template <typename tp>
inline void chemn(tp &a, tp b) { (a > b) ? (a = b) : 0; }

cs int N = 205;

cs double pi = acos(-1);

#define pd pair<double, double>
cs double eps = 1e-9;
int n, x0, y0, d, t;
vector<pd> inter;
void ins(double l, double r) {
    if (l < 0) l += 2 * pi;
    if (r > 2 * pi + eps) r -= 2 * pi;
    cout << l << " " << r << '\n';
    if (l + eps < r)
        inter.pb(pd(l, r));
    else
        inter.pb(pd(l, 2 * pi)), inter.pb(pd(0, r));
}
void init() {
    sort(inter.begin(), inter.end());
    double lst = -1;
    vector<pd> res;
    for (int i = 0; i < inter.size(); i++) {
        lst = inter[i].se;
        int j = i;
        while (j + 1 < inter.size() && inter[j + 1].fi < lst) {
            j++;
            lst = max(inter[j].se, lst);
        }
        res.pb(pd(inter[i].fi, lst));
        i = j;
    }
    inter = res;
}
double calc(pd x, pd y) {
    if (x.fi > y.fi) swap(x, y);
    if (x.se < y.fi) return 0;
    if (x.se > y.se) return y.se - y.fi;
    return x.se - y.fi;
}
double query(double l, double r) {
    cout << l << " " << r << '\n';
    double ans = 0;
    for (pd x : inter) {
        ans += calc(x, pd(l, r));
    }
    return ans;
}
void solve() {
    cin >> n >> x0 >> y0 >> d >> t;
    for (int i = 1; i <= n; i++) {
        int x, y;
        cin >> x >> y;
        double p1 = atan2(y, x);
        double dis = sqrt(x * x + y * y);
        double del = asin(d / dis);
        //	cout<<dis<<" "<<d<<'\n';
        cout << p1 << " " << del << '\n';
        ins(p1 - del, p1 + del);
    }
    init();
   // for (pd x : inter) cout << x.fi << " " << x.se << '\n';
    int cnt = t / (2 * pi);
    double res = t - cnt * 2 * pi;
    double p0 = atan2(y0, x0);
    double ans = cnt * query(0, 2 * pi);
    if (p0 + res > 2 * pi)
        ans = ans + query(p0, 2 * pi) + query(0, p0 + res - 2 * pi);
    else
        ans = ans + query(p0, p0 + res);
    printf("%.9lf\n", ans);
}

int main() {
    int T = 1;
    while (T--) solve();
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 4140kb

input:

3 1 0 1 1
1 2
2 1
2 2

output:

1.10715 0.463648
0.643501 1.5708
0.463648 0.463648
0 0.927295
0.785398 0.361367
0.424031 1.14677
0 6.28319
0 1
1.000000000

result:

wrong answer 1st numbers differ - expected: '1.0000000', found: '1.1071500', error = '0.1071500'