QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#788343 | #9668. Isoball: 2D Version | Andeviking | WA | 5ms | 3728kb | C++20 | 2.4kb | 2024-11-27 16:37:12 | 2024-11-27 16:37:12 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
#define range(x) (x).begin(), (x).end()
struct Point {
ll x, y;
Point() {};
Point(ll x, ll y)
: x(x), y(y)
{
}
Point operator-(Point B)
{
return Point(x - B.x, y - B.y);
}
};
ll cross(Point a, Point b)
{
return a.x * b.y - a.y * b.x;
}
int sgn(ll x)
{
if (x < 0)
return -1;
else if (x == 0)
return 0;
else
return 1;
}
ll Dot(Point a, Point b)
{
return a.x * b.x + a.y * b.y;
}
bool Cross_segment(Point p1, Point p2, Point p3, Point p4)
{
bool cond_1 = max(p1.x, p2.x) < min(p3.x, p4.x);
bool cond_2 = max(p1.y, p2.y) < min(p3.y, p4.y);
bool cond_3 = max(p3.x, p4.x) < min(p1.x, p2.x);
bool cond_4 = max(p3.y, p4.y) < min(p1.y, p2.y);
if (cond_1 || cond_2 || cond_3 || cond_4) {
return false;
}
if (cross(p3 - p1, p2 - p1) * cross(p4 - p1, p2 - p1) > 0 || cross(p2 - p3, p4 - p3) * cross(p1 - p3, p4 - p3) > 0) {
return false;
}
return true;
}
void solve()
{
int x, y, r, vx, vy;
cin >> x >> y >> r >> vx >> vy;
int lx, ly, rx, ry;
cin >> lx >> ly >> rx >> ry;
lx += r, ly += r;
rx -= r, ry -= r;
if (rx < lx || ry < ly) {
cout << "No\n";
return;
}
Point a(x, y);
ll cnt = 0;
if (vx && vy)
cnt = min(10000000 / abs(vx), 10000000 / abs(vy));
else if (vx)
cnt = 10000000 / abs(vx);
else
cnt = 10000000 / abs(vy);
x += cnt * vx;
y += cnt * vy;
Point b(x, y);
// cout << a.x << ' ' << a.y << ' ' << b.x << ' ' << b.y << '\n';
Point cka(lx, ly), ckb(lx, ry);
if (Cross_segment(a, b, cka, ckb)) {
cout << "Yes\n";
return;
}
ckb.x = rx, ckb.y = ly;
if (Cross_segment(a, b, cka, ckb)) {
cout << "Yes\n";
return;
}
ckb.x = rx, ckb.y = ry;
cka.x = lx, cka.y = ry;
if (Cross_segment(a, b, cka, ckb)) {
cout << "Yes\n";
return;
}
cka.x = rx, cka.y = ly;
if (Cross_segment(a, b, cka, ckb)) {
cout << "Yes\n";
return;
}
cout << "No\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: 3656kb
input:
5 0 0 1 1 0 2 -2 6 2 0 0 1 1 0 2 0 6 2 0 0 1 1 1 1 1 3 3 0 0 1 -1 -1 1 1 3 3 0 0 1 -1 1 -5 -5 5 5
output:
Yes No Yes No Yes
result:
ok 5 lines
Test #2:
score: 0
Accepted
time: 0ms
memory: 3668kb
input:
2 0 0 1000000 1000000 1000000 -1000000 -1000000 1000000 1000000 1000000 1000000 1 -1000000 -1000000 -1000000 -1000000 -999999 -999999
output:
Yes No
result:
ok 2 lines
Test #3:
score: 0
Accepted
time: 4ms
memory: 3720kb
input:
10000 10 -10 10 1 -2 -13 -8 6 -1 -7 -10 3 3 1 -3 -12 14 -9 -9 -2 4 4 -3 -11 7 -8 12 -3 1 8 -1 0 -11 1 19 13 -1 8 9 -3 2 11 -5 17 4 -2 -7 3 -3 5 -12 -14 10 1 0 3 6 -5 3 -11 2 2 16 4 9 6 5 -4 -8 -11 18 -1 0 0 8 4 -2 -10 -15 1 12 8 4 4 5 2 -17 3 8 7 -3 7 10 -4 0 1 0 10 20 -6 -10 5 -3 -1 -20 -20 15 7 5 ...
output:
No No No No No Yes No No No No No Yes No Yes No No Yes No Yes No No No No No Yes No No No Yes No No No Yes No No Yes No No No No No No No No No No No No Yes No No No No No No No No No Yes Yes No No Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Yes...
result:
ok 10000 lines
Test #4:
score: -100
Wrong Answer
time: 5ms
memory: 3728kb
input:
10000 435040 443595 65698 -909008 707638 -786096 -552413 -684992 853567 662291 -64591 243223 870386 898512 -302221 -384430 747067 -262550 -626562 -285970 945616 -695143 223635 14005 -632139 169681 481076 -955128 470568 284454 -511490 -623372 -465039 -713986 477856 -675726 304873 -693785 286659 -9272...
output:
No No No No No No No No No No No No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No No No No No ...
result:
wrong answer 21st lines differ - expected: 'No', found: 'Yes'