QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#640879#9434. Italian CuisineCu_OH_2WA 0ms3776kbC++201.5kb2024-10-14 16:40:122024-10-14 16:40:14

Judging History

你现在查看的是最新测评结果

  • [2024-10-14 16:40:14]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3776kb
  • [2024-10-14 16:40:12]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
using ll = long long;

const ll INF = 1e18;
const long double EPS = 1e-8;
struct P
{
    ll x, y;

    P(): x(0), y(0) {}
    P(ll x, ll y): x(x), y(y) {}

    P operator-(const P& rhs) const { return P(x - rhs.x, y - rhs.y); }
    P operator+(const P& rhs) const { return P(x + rhs.x, y + rhs.y); }
    ll operator*(const P& rhs) const { return x * rhs.x + y * rhs.y; }
    ll len2() { return *this * *this; }
};

ll sqr(ll x) { return x * x; }
ll dis2(const P& p1, const P& p2) { return (p1 - p2).len2(); }
ll cross(const P& p1, const P& p2) { return p1.x * p2.y - p2.x * p1.y; }

ll area(const P& p1, const P& p2, const P& p3) { return fabsl(cross(p2 - p1, p3 - p1)); }

void solve()
{
    ll n, R;
    P c;
    cin >> n >> c.x >> c.y >> R;
    vector<P> p(n);
    for (int i = 0; i < n; ++i) cin >> p[i].x >> p[i].y;
    auto check = [&](int l, int r) { return area(p[l], p[r], c) / sqrtl(dis2(p[l], p[r])) > R - EPS; };
    ll res = 0, ans = 0;
    for (int l = 0, r = 1; l < n; ++l)
    {
        while (check(l, (r + 1) % n) && cross(p[(r + 1) % n] - p[l], c - p[l]) > 0)
        {
            res += area(p[l], p[r % n], p[(r + 1) % n]);
            r++;
        }
        ans = max(ans, res);
        res -= area(p[l], p[(l + 1) % n], p[r % n]);
    }
    cout << ans << '\n';
    return;
}

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int T = 1;
    cin >> T;
    while (T--) solve();
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3776kb

input:

3
5
1 1 1
0 0
1 0
5 0
3 3
0 5
6
2 4 1
2 0
4 0
6 3
4 6
2 6
0 3
4
3 3 1
3 0
6 3
3 6
0 3

output:

5
24
0

result:

ok 3 number(s): "5 24 0"

Test #2:

score: -100
Wrong Answer
time: 0ms
memory: 3484kb

input:

1
6
0 0 499999993
197878055 -535013568
696616963 -535013568
696616963 40162440
696616963 499999993
-499999993 499999993
-499999993 -535013568

output:

286862654137719264

result:

wrong answer 1st numbers differ - expected: '0', found: '286862654137719264'