# Codeforces Round #416 (Div. 2), problem: (D) Vladik and Favorite Game Solution In C/C++

#include <cstdio>
#include <algorithm>
using namespace std;

int n,m,x,y;
char s[105][105];
char l=’L’,r=’R’,u=’U’,d=’D’;

int fx,fy,fl,an,vis[105][105];
inline void op(char c)
{
putchar(c);
putchar(‘\n’);
fflush(stdout);
scanf(“%d%d”,&x,&y);
if(x==fx&&y==fy)fl=1;
}

char ans[20050];
void dfs(int x,int y)
{
if(s[x][y]==’*’||vis[x][y])return;
vis[x][y]=1;
if(x==fx&&y==fy)
{
for(int i=1;i<=an;++i)
op(ans[i]);
fl=1;return;
}
++an;
ans[an]=u;
dfs(x-1,y);
if(fl)return;

ans[an]=d;
dfs(x+1,y);
if(fl)return;

ans[an]=l;
dfs(x,y-1);
if(fl)return;

ans[an]=r;
dfs(x,y+1);
if(fl)return;

–an;
}

int main()
{
scanf(“%d%d”,&n,&m);
getchar();
for(int i=1;i<=n;++i)
{
gets(s[i]+1);
s[i][0]=s[i][m+1]=’*’;
for(int j=1;j<=m;++j)
if(s[i][j]==’F’)fx=i,fy=j;
}
for(int i=1;i<=m;++i)
s[0][i]=s[n+1][i]=’*’;

if(fx==1&&fy==1)return 0;
if(s[1][2]!=’*’)
{
op(r);
if(y==1)swap(l,r);else op(l);
if(n>1)
{
x=1;y=1;
while(s[x+1][y]==’*’)
{
op(r);
if(fl)return 0;
}
op(d);
if(fl)return 0;
if(x==1)swap(u,d);
}
}
else if(s[2][1]!=’*’)
{
op(d);
if(x==1)swap(u,d);else op(u);
x=1;y=1;
if(m>1)
{
while(s[x][y+1]==’*’)
{
op(d);
if(fl)return 0;
}
op(r);
if(fl)return 0;
if(y==1)swap(l,r);
}
}

dfs(x,y);
return 0;
}

(Visited 34 times, 1 visits today)
By |2017-07-24T17:22:57+00:00July 24th, 2017|Categories: C/C++, Programming||0 Comments