Submission #1795943
Source Code Expand
#include<iostream>
#include<iomanip>
#include<cmath>
int n;
int sx;
int sy;
int gx;
int gy;
int ff[200000];
int fff[200000];
const double cir=3.14159265358979*5;
//direc 1右 2左 4上 5下 から 差が1なら半周 それ以外なら4分の1周
bool judge(int xx,int yy){
for(int i=0;i<n;i++){
if(ff[i]==xx&&fff[i]==yy)
return true;
}
return false;
}
double rec(int direc,int nx,int ny,double len){
double res=300000000;
if(len<abs(gx-sy)*100+abs(gy-sy)*100+200){
if(nx==gx&&ny==gy)
res=len;
else{
if(judge(nx,ny)){
if(direc!=1)
if(nx<gx+1){
if(abs(direc-2)==1)
res=rec(2,nx+1,ny,len+90+cir*2)<res?rec(2,nx+1,ny,len+90+cir*2):res;
else
res=rec(2,nx+1,ny,len+90+cir)<res?rec(2,nx+1,ny,len+90+cir):res;
}
if(direc!=2)
if(0<nx){
if(abs(direc-1)==1)
res=rec(1,nx-1,ny,len+90+cir*2)<res?rec(1,nx-1,ny,len+90+cir*2):res;
else
res=rec(1,nx-1,ny,len+90+cir)<res?rec(1,nx-1,ny,len+90+cir):res;
}
if(direc!=4)
if(ny<gy+1){
if(abs(direc-5)==1)
res=rec(5,nx,ny+1,len+90+cir*2)<res?rec(5,nx,ny+1,len+90+cir*2):res;
else
res=rec(5,nx,ny+1,len+90+cir)<res?rec(5,nx,ny+1,len+90+cir):res;
}
if(direc!=5)
if(0<ny){
if(abs(direc-4)==1)
res=rec(4,nx,ny-1,len+90+cir*2)<res?rec(4,nx,ny-1,len+90+cir*2):res;
else
res=rec(4,nx,ny-1,len+90+cir)<res?rec(4,nx,ny-1,len+90+cir):res;
}
}
else{
if(direc!=1)
if(nx<gx+1){
if(!judge(nx+1,ny))
res=rec(2,nx+1,ny,len+100)<res?rec(2,nx+1,ny,len+100):res;
else
res=rec(2,nx+1,ny,len+90)<res?rec(2,nx+1,ny,len+90):res;
}
if(direc!=2)
if(0<nx){
if(!judge(nx-1,ny))
res=rec(1,nx-1,ny,len+100)<res?rec(1,nx-1,ny,len+100):res;
else
res=rec(1,nx-1,ny,len+90)<res?rec(1,nx-1,ny,len+90):res;
}
if(direc!=4)
if(ny<gy+1){
if(!judge(nx,ny+1))
res=rec(5,nx,ny+1,len+100)<res?rec(5,nx,ny+1,len+100):res;
else
res=rec(5,nx,ny+1,len+90)<res?rec(5,nx,ny+1,len+90):res;
}
if(direc!=5)
if(0<ny){
if(!judge(nx,ny-1))
res=rec(4,nx,ny-1,len+100)<res?rec(4,nx,ny-1,len+100):res;
else
res=rec(4,nx,ny-1,len+90)<res?rec(4,nx,ny-1,len+90):res;
}
}
}
}
return res;
}
int main(){
std::cin>>sx>>sy>>gx>>gy;
std::cin>>n;
for(int i=0;i<n;i++){
std::cin>>ff[i]>>fff[i];
}
std::cout<<std::setprecision(18)<<rec(-1,sx,sy,0)<<std::endl;
return 0;
}
Submission Info
Submission Time |
|
Task |
C - Fountain Walk |
User |
HPaddy |
Language |
C++14 (GCC 5.4.1) |
Score |
0 |
Code Size |
3770 Byte |
Status |
WA |
Exec Time |
2107 ms |
Memory |
4864 KB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
0 / 900 |
Status |
|
|
Set Name |
Test Cases |
Sample |
sample_01.txt, sample_02.txt, sample_03.txt |
All |
sample_01.txt, sample_02.txt, sample_03.txt, sample_01.txt, sample_02.txt, sample_03.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt, subtask_1_26.txt, subtask_1_27.txt, subtask_1_28.txt, subtask_1_29.txt, subtask_1_30.txt, subtask_1_31.txt, subtask_1_32.txt, subtask_1_33.txt, subtask_1_34.txt, subtask_1_35.txt, subtask_1_36.txt, subtask_1_37.txt, subtask_1_38.txt, subtask_1_39.txt, subtask_1_40.txt, subtask_1_41.txt |
Case Name |
Status |
Exec Time |
Memory |
sample_01.txt |
AC |
4 ms |
256 KB |
sample_02.txt |
WA |
1 ms |
256 KB |
sample_03.txt |
WA |
1 ms |
256 KB |
subtask_1_01.txt |
AC |
1 ms |
256 KB |
subtask_1_02.txt |
AC |
1 ms |
256 KB |
subtask_1_03.txt |
AC |
1 ms |
256 KB |
subtask_1_04.txt |
AC |
1 ms |
256 KB |
subtask_1_05.txt |
AC |
1 ms |
256 KB |
subtask_1_06.txt |
AC |
1 ms |
256 KB |
subtask_1_07.txt |
AC |
1 ms |
256 KB |
subtask_1_08.txt |
AC |
1 ms |
256 KB |
subtask_1_09.txt |
TLE |
2103 ms |
2944 KB |
subtask_1_10.txt |
TLE |
2103 ms |
2304 KB |
subtask_1_11.txt |
WA |
37 ms |
512 KB |
subtask_1_12.txt |
TLE |
2103 ms |
2432 KB |
subtask_1_13.txt |
WA |
148 ms |
1408 KB |
subtask_1_14.txt |
TLE |
2103 ms |
2816 KB |
subtask_1_15.txt |
TLE |
2104 ms |
4864 KB |
subtask_1_16.txt |
TLE |
2103 ms |
2432 KB |
subtask_1_17.txt |
TLE |
2103 ms |
2304 KB |
subtask_1_18.txt |
TLE |
2103 ms |
2432 KB |
subtask_1_19.txt |
TLE |
2103 ms |
2432 KB |
subtask_1_20.txt |
TLE |
2103 ms |
2432 KB |
subtask_1_21.txt |
WA |
195 ms |
1792 KB |
subtask_1_22.txt |
TLE |
2103 ms |
2432 KB |
subtask_1_23.txt |
WA |
191 ms |
1792 KB |
subtask_1_24.txt |
TLE |
2103 ms |
256 KB |
subtask_1_25.txt |
TLE |
2103 ms |
256 KB |
subtask_1_26.txt |
TLE |
2107 ms |
256 KB |
subtask_1_27.txt |
TLE |
2103 ms |
256 KB |
subtask_1_28.txt |
TLE |
2103 ms |
2560 KB |
subtask_1_29.txt |
TLE |
2103 ms |
2432 KB |
subtask_1_30.txt |
WA |
190 ms |
1792 KB |
subtask_1_31.txt |
TLE |
2103 ms |
2560 KB |
subtask_1_32.txt |
TLE |
2103 ms |
2560 KB |
subtask_1_33.txt |
TLE |
2103 ms |
2560 KB |
subtask_1_34.txt |
TLE |
2107 ms |
2560 KB |
subtask_1_35.txt |
WA |
191 ms |
1792 KB |
subtask_1_36.txt |
WA |
191 ms |
1792 KB |
subtask_1_37.txt |
WA |
191 ms |
1792 KB |
subtask_1_38.txt |
WA |
194 ms |
1792 KB |
subtask_1_39.txt |
WA |
194 ms |
1792 KB |
subtask_1_40.txt |
WA |
191 ms |
1792 KB |
subtask_1_41.txt |
WA |
192 ms |
1792 KB |