比赛 |
练习12 |
评测结果 |
AAAAAAAAA |
题目名称 |
两只塔姆沃斯牛 |
最终得分 |
100 |
用户昵称 |
NVIDIA |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2017-06-30 13:38:05 |
显示代码纯文本
#include<cstdio>
#include<cstdlib>
#define Turn(x) ((x+1)%4)
#define FLAG {time=0; break;}
using namespace std;
/*char buf[1<<15],*fs,*ft;
inline char getc() {return (fs==ft&&(ft=(fs=buf)+fread(buf,1,1<<15,stdin),fs==ft))?0:*fs++;}
inline int q()
{
int x=0,f=1; char ch=getc();
while(!isdigit(ch)){if(ch=='-')f=-1;ch=getc();}
while(isdigit(ch)){x=x*10+ch-'0';ch=getc();}return x*f;
}
char mas[1<<15],*FS=mas,*FT=mas+(1<<15);
#define ot(x) (fs==ft?fwrite(mas,1,1<<15,stdout),*(FS=mas)++=x:*FS++=x)
inline void w(int x)
{
if(x<0) {ot(45);x=-x;}
static char s[15],*b;b=s;
if(!x)*b++=48;
for(;x;*b++=x%10+48,x/=10);
for(;b--!=s;ot(*b));
}*/
const int dx[4]={-1, 0, 1, 0};
const int dy[4]={ 0, 1, 0,-1};
int vis[20][20][5],map[20][20],i,j,fx,fy,cx,cy,fflg,cflg,fdir=0,cdir=0,time;;
inline void PREDO()
{
char stmp[20];for (i=1;i<=10;i++){scanf("%s", stmp);for (j=1;j<=10;j++){if(stmp[j-1]!='*')map[i][j]=1;if(stmp[j-1]=='F')fx=i,fy=j;if(stmp[j-1]=='C')cx=i,cy=j;}}
}
inline int DO()
{
freopen("ttwo.in" ,"r",stdin);
freopen("ttwo.out","w",stdout);
PREDO();
for (time=0;fx!=cx||fy!=cy;time++)
{
fflg=cflg=0;if (vis[fx][fy][fdir]>100 && vis[cx][cy][cdir]>100)FLAG;
vis[fx][fy][fdir]++;vis[cx][cy][cdir]++;
for (i=1; i<=4 && !map[fx+dx[fdir]][fy+dy[fdir]] && !fflg; i++) fdir=Turn(fdir), fflg=1;
if (i>4) FLAG;
for (i=1; i<=4 && !map[cx+dx[cdir]][cy+dy[cdir]] && !cflg; i++) cdir=Turn(cdir), cflg=1;
if (i>4) FLAG;
if (!fflg) fx+=dx[fdir], fy+=dy[fdir];
if (!cflg) cx+=dx[cdir], cy+=dy[cdir];
}
printf("%d\n", time);
}
int aa=DO();
int main(){;}