QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#733483#9576. Ordainer of Inexorable Judgmentlqh2024Compile Error//C++232.0kb2024-11-10 19:20:572024-11-10 19:20:57

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-10 19:20:57]
  • 评测
  • [2024-11-10 19:20:57]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define double long double
struct point {
    double x, y;
};

signed main() {
    cin.tie(0) -> sync_with_stdio(0);

    int n;
    double x0, y0, d, t;
    cin >> n >> x0 >> y0 >> d >> t;

    vector<point> a(n + 1);
    for (int i = 1; i <= n; i++) {
        cin >> a[i].x >> a[i].y;
    }

    double mx = 0, mi = 1e9;
    const double PI = acos((double)(-1));
    auto get = [&](double k, point a) -> double {
        double theta = atan(k);
        if (theta < 0) theta = PI / 2 - theta;

        if (theta < PI / 2 && a.x < 0) {
            theta += PI;
        } 
        if (theta > PI / 2 && a.x > 0) {
            theta += PI;
        }
        return theta;
    };

    for (int i = 1; i <= n; i++) {
        auto [x, y] = a[i];
        if (x == d) {
            mx = max(mx, max(PI / 2 + (a[i].y < 0 ? PI : 0), get((y * y - d * d) / (2 * x * y), a[i])));
            mi = min(mi, min(PI / 2 + (a[i].y < 0 ? PI : 0), get((y * y - d * d) / (2 * x * y), a[i])));
        } else {
            double delta = 4 * x * x * y * y - 4 * (d * d - x * x) * (d * d - y * y);
            double k1 = (-2 * x * y + sqrt(delta)) / 2 / (d * d - x * x);
            double k2 = (-2 * x * y - sqrt(delta)) / 2 / (d * d - x * x);
            mx = max({mx, get(k1, a[i]), get(k2, a[i])});
            mi = min({mi, get(k1, a[i]), get(k2, a[i])});
        }
    }

    auto get_ans = [&](double t) -> double {
        double cnt = floor(t / (2 * PI)), res = 0;
        t -= cnt * 2 * PI;
        if (mx - mi > PI) {
            res += cnt * (2 * PI - mx + mi);
            res += min(mi, t);
        } else {
            res += cnt * (mx - mi);
            res += max<double>(0, min(mx, t) - mi);
        }

        return res;
    };
    cerr << get_ans(atan2(y0, x0) + t) << " " <<  mx << " " << mi << "\n";
    cout << fixed << setprecision(20) << get_ans(atan2(y0, x0) + t) - get_ans(atan2(y0, x0)) << "\n";
}

詳細信息

answer.code:63:76: error: stray ‘\’ in program
   63 |     cerr << get_ans(atan2(y0, x0) + t) << " " <<  mx << " " << mi << "\n";
      |                                                                            ^
answer.code: In function ‘int main()’:
answer.code:63:43: error: ‘"’ was not declared in this scope
   63 |     cerr << get_ans(atan2(y0, x0) + t) << " " <<  mx << " " << mi << "\n";
      |                                           ^~