Uva 11831 Solution

#include<bits/stdc++.h>
#define N 1010
using namespace std;
int row, column, m;
char a[N][N];

int check(int r, int c)
{
return(r > 0 && r <= row && c > 0 && c <= column && a[r][c] != '#');
}

int main()
{
ios_base :: sync_with_stdio;
cin.tie(NULL);
cout.tie(NULL);
while(cin >> row >> column >> m)
{
if(row == 0 && column == 0 && m == 0)
break;

int x, y;
char ch;
for(int i=1;i<=row;i++)
{
for(int j=1;j<=column;j++)
{
cin >> a[i][j];
if(a[i][j] == 'N' || a[i][j] == 'S' || a[i][j] == 'L' || a[i][j] == 'O')
{
x = i;
y = j;
ch = a[i][j];
}
}
}

string s;
cin >> s;
int cnt = 0;
for(int i=0;i<s.size();i++)
{
if(s[i] == 'F')
{
if(ch == 'N' && check(x-1, y))
x--;
if(ch == 'O' && check(x, y-1))
y--;
if(ch == 'S' && check(x+1, y))
x++;
if(ch == 'L' && check(x, y+1))
y++;

if(a[x][y] == '*')
{
a[x][y] = '.';
cnt++;
}
}

else if(s[i] == 'D')
{
if(ch == 'N')
ch = 'L';
else if(ch == 'L')
ch = 'S';
else if(ch == 'S')
ch = 'O';
else if(ch == 'O')
ch = 'N';
}
else
{
if(ch == 'N')
ch = 'O';
else if(ch == 'O')
ch = 'S';
else if(ch == 'S')
ch = 'L';
else if(ch == 'L')
ch = 'N';
}
}

cout << cnt << "\n";
}

return 0;
}

Comments