QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#697427 | #9434. Italian Cuisine | Hojstyer | WA | 0ms | 3752kb | C++20 | 4.0kb | 2024-11-01 14:02:33 | 2024-11-01 14:02:36 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
template <class T>
struct Point
{
T x;
T y;
Point(T x_ = 0, T y_ = 0) : x(x_), y(y_) {}
template <class U>
operator Point<U>()
{
return Point<U>(U(x), U(y));
}
Point &operator+=(Point p) &
{
x += p.x;
y += p.y;
return *this;
}
Point &operator-=(Point p) &
{
x -= p.x;
y -= p.y;
return *this;
}
Point &operator*=(T v) &
{
x *= v;
y *= v;
return *this;
}
Point operator-() const
{
return Point(-x, -y);
}
friend Point operator+(Point a, Point b)
{
return a += b;
}
friend Point operator-(Point a, Point b)
{
return a -= b;
}
friend Point operator*(Point a, T b)
{
return a *= b;
}
friend Point operator*(T a, Point b)
{
return b *= a;
}
friend bool operator==(Point a, Point b)
{
return a.x == b.x && a.y == b.y;
}
friend istream &operator>>(istream &is, Point &p)
{
return is >> p.x >> p.y;
}
friend ostream &operator<<(ostream &os, Point p)
{
return os << "(" << p.x << ", " << p.y << ")";
}
};
template <class T>
T dot(Point<T> a, Point<T> b)
{
return a.x * b.x + a.y * b.y;
}
template <class T>
T cross(Point<T> a, Point<T> b)
{
return a.x * b.y - a.y * b.x;
}
template <class T>
double distance(Point<T> a, Point<T> b)
{
T xx = a.x - b.x, yy = a.y - b.y;
return sqrtl(xx * xx + yy * yy);
}
template <class T>
T distance2(Point<T> a, Point<T> b)
{
T xx = a.x - b.x, yy = a.y - b.y;
return xx * xx + yy * yy;
}
template <class T>
T square(Point<T> p)
{
return dot(p, p);
}
template <class T>
double length(Point<T> p)
{
return sqrt(double(square(p)));
}
long double length(Point<long double> p)
{
return sqrt(square(p));
}
template <class T>
struct Line
{
Point<T> a;
Point<T> b;
Line(Point<T> a_ = Point<T>(), Point<T> b_ = Point<T>()) : a(a_), b(b_) {}
};
template <class T>
Point<T> rotate(Point<T> a)
{
return Point(-a.y, a.x);
}
template <class T>
int sgn(Point<T> a)
{
return a.y > 0 || (a.y == 0 && a.x > 0) ? 1 : -1;
}
template <class T>
bool pointOnLineLeft(Point<T> p, Line<T> l)
{
return cross(l.b - l.a, p - l.a) > 0;
}
template <class T>
Point<T> lineIntersection(Line<T> l1, Line<T> l2)
{
return l1.a + (l1.b - l1.a) * (cross(l2.b - l2.a, l1.a - l2.a) / cross(l2.b - l2.a, l1.a - l1.b));
}
template <class T>
bool pointOnSegment(Point<T> p, Line<T> l)
{
return cross(p - l.a, l.b - l.a) == 0 && min(l.a.x, l.b.x) <= p.x && p.x <= max(l.a.x, l.b.x) && min(l.a.y, l.b.y) <= p.y && p.y <= max(l.a.y, l.b.y);
}
void solve()
{
int n;
cin >> n;
int r;
Point<int> o;
cin >> o.x >> o.y >> r;
vector<Point<int>> p(n);
for (int i = 0; i < n; ++i)
cin >> p[i].x >> p[i].y;
ll ans = 0, res = 0;
int pos = 0;
vector<int> vis(n + 1);
for (int i = 0; i < n; ++i)
{
while (i != (pos + 1) % n)
{
if (cross(o - p[i], p[(pos + 1) % n] - p[i]) > 0)
break;
ll A = p[i].y - p[(pos + 1) % n].y, B = p[(pos + 1) % n].x - p[i].x, C = cross(p[i], p[(pos + 1) % n]);
__int128_t le = A * o.x + B * o.y + C;
le = le * le;
__int128_t re = 1ll * r * r;
re *= A * A + B * B;
if (le < re)
break;
res += cross(p[i] - p[pos], p[i] - p[(pos + 1) % n]);
pos = (pos + 1) % n;
}
ans = max(ans, res);
res -= cross(p[pos] - p[i], p[pos] - p[i + 1]);
}
cout << ans << "\n";
}
int main()
{
ios::sync_with_stdio(false);
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: 3480kb
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: 3752kb
input:
1 6 0 0 499999993 197878055 -535013568 696616963 -535013568 696616963 40162440 696616963 499999993 -499999993 499999993 -499999993 -535013568
output:
523415784
result:
wrong answer 1st numbers differ - expected: '0', found: '523415784'