Uva 10443 Solution

#include<bits/stdc++.h>
using namespace std;
char a[105][105], b[105][105];
int row, column;
int x[] = {1, -1, 0, 0};
int y[] = {0, 0, 1, -1};

bool valid(int r, int c)
{
    return (r >= 0) && (r < row) && (c >= 0) && (c < column);
}

char check(int x1, int y1)
{
    if(a[x1][y1] == 'R')
    {
        int i;
        for(i=0;i<4;i++)
        {
            int tx = x1 + x[i];
            int ty = y1 + y[i];

            if(valid(tx, ty) && a[tx][ty] == 'P')
                return 'P';
        }
        return 'R';
    }
    else if(a[x1][y1] == 'S')
    {
        int i;
        for(i=0;i<4;i++)
        {
            int tx = x1 + x[i];
            int ty = y1 + y[i];

            if(valid(tx, ty) && a[tx][ty] == 'R')
                return 'R';
        }

        return 'S';
    }
    else
    {
        int i;
        for(i=0;i<4;i++)
        {
            int tx = x1 + x[i];
            int ty = y1 + y[i];

            if(valid(tx, ty) && a[tx][ty] == 'S')
                return 'S';
        }

        return 'P';
    }
}

int main()
{
    int t, n, i, j;
    cin >> t;
    while(t--)
    {
        cin >> row >> column >> n;

        for(i=0;i<105;i++)
        {
            for(j=0;j<105;j++)
            {
                a[i][j] = '\0';
                b[i][j] = '\0';
            }
        }

        for(i=0;i<row;i++)
        {
            for(j=0;j<column;j++)
            {
                cin >> a[i][j];
            }
        }

        while(n--)
        {
            for(i=0;i<row;i++)
            {
                for(j=0;j<column;j++)
                {
                    char p = check(i, j);
                    b[i][j] = p;
                }
            }

            for(i=0;i<row;i++)
            {
                for(j=0;j<column;j++)
                {
                    a[i][j] = b[i][j];
                }
            }
        }

        for(i=0;i<row;i++)
        {
            for(j=0;j<column;j++)
                cout << a[i][j];

            cout << "\n";
        }
        if(t > 0)
            cout << "\n";
    }

    return 0;
}

Comments