Cod sursa(job #1781551)

Utilizator nurof3nCioc Alex-Andrei nurof3n Data 16 octombrie 2016 23:01:09
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 4.35 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("rj.in");
ofstream g ("rj.out");
short nl, nc, lp, ls, cp, cs, l, c, i, j, uv = 0, in, sf, rin, rsf, l2, c2, ll, cc;
struct coada
{
    int l;
    int c;
} v[40000], r[40000];
char m[101][101], x[101];
int main()
{

    f >> nl >> nc;
    f.getline (x, 100);
    for (i = 0; i < nl; i++)
    {
        f.getline (x, 100);
        for (j = 0; j < nc; j++)
        {
            m[i][j] = x[j];
            if (m[i][j] == 'R')
            {
                r[0].l = i;
                r[0].c = j;
            }
            if (m[i][j] == 'J')
            {
                v[0].l = i;
                r[0].c = j;
            }
            cout << m[i][j];
        }
        cout << '\n';
    }

    in = 0;
    sf = 0;
    rin = 0;
    rsf = 0;
    bool gata = 0;
    while (gata == 0 && in <= sf && rin <= sf)
    {
        l = v[in].l;
        c = v[in].c;
        l2 = r[in].l;
        c2 = r[in].c;
        uv = m[l][c] + 1;
        if (l - 1 >= 1)
            if (m[l - 1][c] == 32)
            {
                m[l - 1][c] = uv;
                sf++;
                v[sf].l = l - 1;
                v[sf].c = c;
            }
            else if (m[l - 1][c] == 'R')
            {
                gata = 1;
                ll = l - 1;
                cc = c;
                break;
            }
        if (l + 1 <= nl)
            if (m[l + 1][c] == 32 && gata == 0)
            {
                m[l + 1][c] = uv;
                sf++;
                v[sf].l = l + 1;
                v[sf].c = c;
            }
            else if (m[l + 1][c] == 'R')
            {
                gata = 1;
                ll = l + 1;
                cc = c;
                break;
            }
        if (c - 1 >= 1)
            if (m[l][c - 1] == 32 && gata == 0)
            {
                m[l][c - 1] = uv;
                sf++;
                v[sf].l = l;
                v[sf].c = c - 1;
            }
            else if (m[l][c - 1] == 'R')
            {
                gata = 1;
                ll = l;
                cc = c - 1;
                break;
            }
        if (c + 1 <= nc)
            if (m[l][c + 1] == 32 && gata == 0)
            {
                m[l][c + 1] = uv;
                sf++;
                v[sf].l = l;
                v[sf].c = c + 1;
            }
            else if (m[l][c + 1] == 'R')
            {
                gata = 1;
                ll = l;
                cc = c + 1;
                break;
            }
///dddddddddddddddddddddddddddddddddd
        if (l2 - 1 >= 1)
            if (m[l2 - 1][c2] == 32)
            {
                m[l2 - 1][c2] = 'R';
                sf++;
                r[sf].l = l2 - 1;
                r[sf].c = c2;
            }
            else if (m[l2 - 1][c2] != 'X')
            {
                gata = 1;
                ll = l2 - 1;
                cc = c2;
                break;
            }
        if (l2 + 1 <= nl)
            if (m[l2 + 1][c2] == 0 && gata == 0)
            {
                m[l2 + 1][c2] = 'R';
                sf++;
                r[sf].l = l2 + 1;
                r[sf].c = c2;
            }
            else if (m[l2 + 1][c2] != 'X')
            {
                gata = 1;
                ll = l2 + 1;
                cc = c2;
                break;
            }
        if (c2 - 1 >= 1)
            if (m[l2][c2 - 1] == 0 && gata == 0)
            {
                m[l2][c2 - 1] = 'R';
                sf++;
                r[sf].l = l2;
                r[sf].c = c2 - 1;
            }
            else if (m[l2][c2 - 1] != 'X')
            {
                gata = 1;
                ll = l2;
                cc = c2 - 1;
                break;
            }
        if (c2 + 1 <= nc)
            if (m[l2][c2 + 1] == 0 && gata == 0)
            {
                m[l2][c2 + 1] = 'R';
                sf++;
                r[sf].l = l2;
                r[sf].c = c2 + 1;
            }
            else if (m[l2][c2 + 1] != 'X')
            {
                gata = 1;
                ll = l2;
                cc = c2 + 1;
                break;
            }
        in++;
        rin++;
    }
    if (gata == 1) g << uv << " " << ll << " " << cc << " ";
    return 0;
}