QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#640879 | #9434. Italian Cuisine | Cu_OH_2 | WA | 0ms | 3776kb | C++20 | 1.5kb | 2024-10-14 16:40:12 | 2024-10-14 16:40:14 |
Judging History
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'