QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#644024 | #9227. Henry the Plumber | tiphareth | WA | 1ms | 3824kb | C++14 | 1.7kb | 2024-10-16 10:06:17 | 2024-10-16 10:06:17 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
typedef long double db;
const db eps=1e-8;
int sgn(db x)
{
if(fabs(x)<eps)return 0;
if(x<0)return -1;
else return 1;
}
struct node{db x,y,z;}a,aa,b,bb;
struct line{node a,b;}L;
node operator+(node a,node b){return {a.x+b.x,a.y+b.y,a.z+b.z};}
node operator-(node a,node b){return {a.x-b.x,a.y-b.y,a.z-b.z};}
db operator*(node a,node b){return a.x*b.x+a.y*b.y+a.z*b.z;}
node operator*(node a,db b){return {a.x*b,a.y*b,a.z*b};}
node operator/(node a,db b){return {a.x/b,a.y/b,a.z/b};}
node operator^(node a,node b){return {a.y*b.z-a.z*b.y,a.z*b.x-a.x*b.z,a.x*b.y-a.y*b.x};}
struct plane{node p,l;}A,B;
void cross(plane A,plane B,line &L)
{
node oo=A.l^B.l;
node v=A.l^oo;
db d=fabs(B.l*v);
node q=A.p+(v*(B.l*(B.p-A.p))/d);
L={q,q+oo};
return;
}
int T;
int main()
{
cin >> T;
while(T--)
{
cin >> a.x >> a.y >> a.z;
cin >> aa.x >> aa.y;
cin >> b.x >> b.y >> b.z;
cin >> bb.x >> bb.y;
if(!sgn((a-b)*aa) && !sgn((a-b)*bb))
{
cout << 2 << endl;
continue;
}
if((!sgn(aa.x) && !sgn(bb.x)) || (!sgn(aa.y) && !sgn(bb.y)))
{
cout << 4 << endl;
continue;
}
if(sgn(aa.x) && sgn(bb.x) && sgn(aa.y) && sgn(bb.y) && !sgn(aa.x*bb.y-aa.y*bb.x))
{
cout << 4 << endl;
continue;
}
A={a,aa},B={b,bb};
cross(A,B,L);
db x=L.a.x,y=L.a.y;
if((!sgn(a.x-x) && !sgn(a.y-y)) || ((!sgn(b.x-x) && !sgn(b.y-y))))
{
if(sgn(a.z-b.z))
cout << 3 << endl;
else cout << 4 << endl;
continue;
}
db k2=1,k1=-a.z-b.z,C=(x-a.x)*(x-b.x)+(y-a.y)*(y-b.y)+a.z*b.z;
db delta=k1*k1-4*k2*C;
if(sgn(delta)>=0)
cout << 3 << endl;
else cout << 4 << endl;
}
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 3784kb
input:
2 -1 -1 3 1 1 2 2 3 2 2 5 5 1 3 0 7 6 -2 1 -2
output:
4 3
result:
ok 2 number(s): "4 3"
Test #2:
score: -100
Wrong Answer
time: 1ms
memory: 3824kb
input:
100 -13 -5 -7 -19 19 -19 -13 0 -7 15 -20 20 19 -17 18 20 -20 -1 18 -19 -18 15 -14 -19 18 19 -20 6 20 -19 -12 9 1 7 -16 -13 -14 -8 8 -13 -19 16 9 20 -19 19 -18 -11 19 -18 19 20 -8 12 20 -11 -9 18 -19 -18 8 11 -13 12 -18 18 13 8 4 -18 -16 20 17 -19 18 20 -18 -3 20 -19 -17 -20 -5 -18 -19 19 16 15 19 20...
output:
4 4 4 4 4 4 3 4 4 4 4 4 4 4 4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 4 4 4 4 3 4 4 4 4 4 4 4 4 4 4 4 3 4 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 4 4 4 4 4 4 4 4 4 4 4
result:
wrong answer 11th numbers differ - expected: '3', found: '4'