QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#747411 | #8779. Square of Triangles | ydzr00000 | WA | 28ms | 3944kb | C++17 | 6.3kb | 2024-11-14 17:07:31 | 2024-11-14 17:07:31 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
using Ld=long double;
const Ld eps=1e-6,sr2=sqrtl(2.00);
int a[5][4],b[13];
Ld c[13];
int P[5],Q[5][4];
inline bool Equals(const Ld &a,const Ld &b){return fabs(a-b)<=eps;}
inline bool Greater(const Ld &a,const Ld &b){return a-b>eps;}
inline bool Less(const Ld &a,const Ld &b){return a-b<(-eps);}
inline bool RtCheckD(const Ld &a,const Ld &b,const Ld &c){return Equals(a*a+b*b,c*c);}
inline bool RtCheckI(const int &a,const int &b,const int &c){return a+b==c;}
inline bool check(const Ld &S)
{
if(b[1]==b[2]&&b[1]+b[2]==b[3])
{
if(b[1]==b[4])
{
if(b[6]==b[7]&&b[9]==b[10]&&b[2]==b[12]&&Equals(c[5]+c[8]+c[11],c[3])&&!Less(c[6],c[3]*0.5)&&!Less(c[10],c[3]*0.5)&&Less(c[6],c[1])&&Less(c[10],c[2]))
return true;
if(b[6]==b[9]&&b[8]==b[11]&&Equals(c[5]+c[12],c[3])&&Equals(c[1],c[7]+c[10])&&!Less(c[6],c[3]*0.5)&&Less(c[6],c[1])&&Less(c[8],max(c[9],c[12])))
return true;
if(b[8]==b[1]&&b[9]==b[10]&&Equals(c[5]+c[12],c[3])&&Equals(c[6],c[7]+c[11])&&!Less(c[6],c[3]*0.5)&&Less(c[6],c[1])&&Less(c[9],max(c[8],c[12])))
return true;
if(b[11]==b[3]&&Equals(c[6]+c[9],c[10])&&Equals(c[8]+c[12],c[1])&&b[5]==b[7]&&Greater(c[10],c[4])&&Less(c[10],c[3])&&Less(c[9],max(c[8],c[4])))
return true;
if(b[5]==b[8]&&b[1]==b[7]&&b[11]==b[9]&&b[6]==b[10]&&b[12]==b[3]&&Less(c[5],c[4])&&Less(c[10],c[3])&&Less(c[9],c[3]))
return true;
if(b[6]==b[7]&&b[8]==b[10]&&Equals(c[5]+c[11],c[1])&&Equals(c[9]+c[12],c[3])&&Greater(c[6],c[4])&&Less(c[6],c[3])&&Less(c[8],max(c[7],c[11])))
return true;
if(b[9]==b[11]&&b[3]==b[12]&&Equals(c[6],c[10]+c[8])&&Equals(c[5]+c[7],c[1])&&Greater(c[6],c[4])&&Less(c[6],c[3])&&Less(c[9],c[12])&&Greater(c[9],c[7]))
return true;
if(b[6]==b[7]&&b[9]==b[10]&&b[12]==b[3]&&Equals(c[5]+c[8]+c[11],c[1])&&Greater(c[6],c[4])&&Greater(c[9],c[6])&&Greater(c[12],c[9]))
return true;
}
if(b[3]==b[12]&&b[6]==b[10]&&b[5]==b[9]&&Equals(c[4]+c[7],c[1])&&Equals(c[8]+c[11],c[2])&&Greater(c[6],c[1])&&Less(c[6],c[3])&&Greater(c[5],c[8])&&Less(c[5],c[6]))
return true;
}
if(b[1]==b[4]&&RtCheckI(b[1],b[2],b[3])&&RtCheckI(b[4],b[5],b[6])&&Greater(b[4],b[5])&&Greater(b[1],b[2]))
{
if(b[6]==b[7]&&b[9]==b[10]&&b[11]==b[3]&&Equals(c[2]+c[8],c[1])&&Equals(c[5]+c[12],c[1])&&Less(b[6],2*b[1])&&Less(b[3],2*b[1])&&Less(b[10],2*b[1]))
return true;
if(b[6]==b[8]&&b[3]==b[12]&&b[9]==b[10]&&Equals(b[9],b[1]*2)&&Equals(c[5]+c[7],c[1])&&Equals(c[2]+c[11],c[4])&&Less(c[3],c[10])&&Less(c[6],c[9]))
return true;
if(b[3]==b[9]&&b[6]==b[12]&&b[8]==b[11]&&Equals(c[10]+c[7],c[1])&&Equals(c[2]+c[5],c[1])&&!Less(c[8],c[1])&&Less(b[8],2*b[1]))
return true;
if(b[7]==b[10]&&b[11]==b[1]&&b[3]==b[8]&&Equals(c[9]+c[12],c[6])&&Equals(c[2]+c[5],c[1])&&Less(c[10],max(c[8],c[11])))
return true;
if(b[3]==b[11]&&b[6]==b[8]&&b[9]==b[10]&&Equals(c[5]+c[7],c[1])&&Equals(c[2]+c[12],c[1])&&Equals(b[1]*2,b[9])&&Less(c[3],c[9])&&Less(c[8],c[9]))
return true;
if(b[10]==b[3]&&b[9]==b[11]&&b[12]==b[6]&&Equals(c[5]+c[7],c[1])&&Equals(c[2]+c[8],c[4])&&Less(b[3],2*b[1])&&Less(b[9],2*b[4])&&Less(b[6],2*b[1])&&RtCheckI(b[7],b[8],b[9]))
return true;
if(b[7]==b[1]&&b[3]==b[9]&&b[6]==b[10]&&b[12]==b[8]&&Equals(c[2]+c[5]+c[11],c[1])&&Greater(c[8],c[6])&&Less(b[8],2*b[1]))
return true;
}
if(RtCheckI(b[1],b[2],b[3])&&Greater(b[1],b[2]))
{
if(b[3]==b[11]&&b[12]==b[1]&&b[9]==b[1]&&b[6]==b[7]&&Equals(c[8]+c[5],c[10])&&Equals(c[2]+c[4],c[1])&&Greater(c[10],c[9])&&Less(b[10],2*b[1])&&Less(c[7],max(c[4],c[9]))&&RtCheckI(b[9],b[4],b[10]))
return true;
if(b[3]==b[11]&&b[9]==b[10]&&b[6]==b[7]&&b[12]==b[1]&&Equals(c[2]+c[4],c[1])&&Equals(c[5]+c[8],c[1])&&Greater(c[10],c[1])&&Less(b[10],2*b[1])&&Greater(c[6],c[4])&&Less(c[6],c[9])&&RtCheckI(b[4],b[5],b[6]))
return true;
if(b[8]==b[9]&&b[11]==b[1]&&b[7]==b[1]&&b[8]==b[6]&&Equals(c[12]+c[5],c[3])&&Equals(c[2]+c[4],c[1])&&Greater(c[6],c[4])&&Less(b[6],2*b[1])&&Less(b[10],2*b[1]))
return true;
if(b[3]==b[10]&&b[4]==b[1]&&b[7]==b[1]&&b[5]==b[8]&&Equals(c[6]+c[9],c[11])&&Equals(c[2]+c[12],c[1])&&Equals(b[11],2*b[1])&&!Less(c[5],0.5*c[11])&&Less(c[5],c[4])&&Greater(c[3],c[1])&&Less(c[3],c[11]))
return true;
}
if(b[1]==b[4]&&b[11]==b[7]&&b[1]==b[11]&&b[8]==b[10]&&b[2]==b[5]&&Equals(c[3]+c[6],c[12]+c[9])&&Equals(c[3]+c[6],sr2*c[1])&&Less(c[8],max(c[7],c[11]))&&Less(c[2],max(c[1],c[4])))
return true;
if(b[1]==b[4]&&b[4]==b[11]&&b[11]==b[9]&&b[3]==b[5]&&b[6]==b[12]&&b[10]==b[8]&&b[2]==b[7]&&b[3]+b[8]==b[2]+b[12])
{
if(!Less(c[3]+c[8],sr2*c[1])&&!Less(c[7]+c[12],sr2*c[1])&&Less(b[12],2*b[1])&&Less(b[8],2*b[1])&&Less(b[2],2*b[1])&&Less(b[3],2*b[1])&&Less(max(c[2]+c[12],c[3]+c[10]),c[1]+c[4])&&Equals(S,b[1]))
return true;
}
return false;
}
inline Ld Area(const Ld &a,const Ld &b,const Ld &c)
{
Ld p=(a+b+c)/2;
Ld s=sqrtl(p*(p-a)*(p-b)*(p-c));
return s;
}
inline void solve()
{
Ld sum=0;
for(int i=1;i<=4;i++)
{
for(int j=1;j<=3;j++)
scanf("%d",&a[i][j]);
Ld x=sqrtl(1.00*a[i][1]);
Ld y=sqrtl(1.00*a[i][2]);
Ld z=sqrtl(1.00*a[i][3]);
sum+=Area(x,y,z);
}
iota(P+1,P+5,1);
for(int i=1;i<=4;i++)
iota(Q[i]+1,Q[i]+4,1);
bool flg=false;
do{
auto dfs=[&](auto self,int dep)->void
{
if(dep==5)
{
int k=0;
for(int i=1;i<=4;i++)
for(int j=1;j<=3;j++)
b[++k]=a[P[i]][Q[P[i]][j]];
for(int i=1;i<=12;i++)
c[i]=sqrtl(1.00*b[i]);
flg|=check(sum);
return;
}
do{
self(self,dep+1);
}while(next_permutation(Q[dep]+1,Q[dep]+4));
};
dfs(dfs,1);
}while(next_permutation(P+1,P+5));
printf("%d\n",flg);
}
int main(){
int t;
scanf("%d",&t);
while(t--)
solve();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 2ms
memory: 3756kb
input:
3 1 1 2 2 1 1 2 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 5 125 130 125 20 145 45 130 145 145 145 80
output:
1 0 1
result:
ok 3 lines
Test #2:
score: 0
Accepted
time: 27ms
memory: 3876kb
input:
20 1998001 7984010 9982009 1998001 7984010 1994005 7984010 9978013 9982009 9978013 1994005 7984010 9958045 7968034 9962037 7968034 1994005 9962037 9958045 1990013 7968034 1994005 1990013 7968034 7952074 9938097 1986025 7952074 9942085 1990013 7952074 9942085 9938097 1986025 7952074 1990013 7936130 9...
output:
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
result:
ok 20 lines
Test #3:
score: 0
Accepted
time: 27ms
memory: 3796kb
input:
20 1148639 3581051 1216206 9999916 7026968 270268 6013463 6013463 6756700 6013463 6013463 6756700 2608850 8630930 9445800 9862940 6448880 6939290 8631650 3682160 5184310 7504700 6652150 1917140 2359505 3170711 2299108 4027811 6760781 2960240 4679918 6106006 3178400 8153446 7975057 5222088 8849500 88...
output:
0 0 0 1 1 1 1 0 1 1 1 1 1 0 0 0 0 1 1 1
result:
ok 20 lines
Test #4:
score: 0
Accepted
time: 27ms
memory: 3916kb
input:
20 7300000 8100000 10000000 8100000 7300000 1000000 1000000 7300000 2900000 2900000 10000000 7300000 61728 8950560 9999936 7901184 4012320 4999968 8950560 3950592 4999968 4012320 123456 4999968 4494200 9932182 9932182 8381683 112355 9932182 5505395 9460291 9932182 9999595 4494200 9190639 5994936 671...
output:
1 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0
result:
ok 20 lines
Test #5:
score: 0
Accepted
time: 28ms
memory: 3764kb
input:
20 10000000 5078125 3828125 78125 5000000 5078125 1250000 10000000 6250000 5000000 6250000 1250000 7079600 5663680 1415920 7079600 796455 9999935 5663680 9999935 5752175 5663680 88495 5752175 4410468 1135368 9999972 5676840 4541472 5676840 4541472 5676840 5676840 8078580 742356 6288192 8345560 44707...
output:
1 1 0 0 0 1 1 1 1 1 1 0 0 1 0 1 0 1 0 0
result:
ok 20 lines
Test #6:
score: 0
Accepted
time: 27ms
memory: 3936kb
input:
20 10000000 5078125 3828125 2031250 78125 1953125 703125 5078125 2031250 5000000 10000000 5000000 5000000 10000000 5000000 5000000 2890625 390625 6250000 1250000 10000000 1250000 2890625 3515625 6711400 9999986 3288586 4899322 4295296 604026 6979856 9999986 4899322 6711400 6979856 268456 9767552 645...
output:
1 1 1 0 1 1 0 1 1 0 1 1 0 0 1 0 0 1 0 0
result:
ok 20 lines
Test #7:
score: -100
Wrong Answer
time: 27ms
memory: 3944kb
input:
20 3063559 8439238 9999919 3063559 9999919 3005756 8381435 9999919 8439238 8381435 3005756 9999919 6923007 4319483 4852022 2130156 4319483 769223 9999899 3076892 6923007 6923007 2899379 4852022 3271584 4999968 493824 6049344 61728 5246880 4999968 4999968 9999936 5246880 3271584 3950592 7398784 99999...
output:
1 0 1 1 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0
result:
wrong answer 2nd lines differ - expected: '1', found: '0'