Cod sursa(job #1322568)

Utilizator ijustwantedtosayhiRazi Alexis ijustwantedtosayhi Data 20 ianuarie 2015 09:56:01
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 3.43 kb
#include <iostream>
#include <fstream>
#include <cstring>
#include <iomanip>

using namespace std;

    struct coords
    {
        int x;
        int y;
    };

    coords r_ps, j_ps, C1[100], C2[100], p_r, p_j, v_r, v_j;

    int prim_r = 0, ultim_r = 0, prim_j = 0, ultim_j = 0;


    int nrDir = 4;

    int dl[] = {-1,0,1,0};
    int dc[] = {0,1,0,-1};

    int m1[50][50] = {};
    int m2[50][50] = {};

    void afiseaza_lc(int pasi_min_unu)
    {
        ifstream read("rj.in");
        ofstream write("rj.out");

        int a, b;

        read >> a >> b;

        for(int i = 0; i < a; i++)
            for(int j = 0; j < b; j++)
                {
                    if(m1[i][j] == pasi_min_unu)
                        {
                            write<<pasi_min_unu<< " " <<i + 2<<" "<<j + 1<<endl;
                        }
                }
    }

int main()
{
    p_r.x = 0;
    p_r.y = 0;

    p_j.x = 0;
    p_j.y = 0;

    v_r.x = 0;
    v_r.y = 0;

    v_j.x = 0;
    v_j.y = 0;

    r_ps.x = 0;
    r_ps.y = 0;

    j_ps.x = 4;
    j_ps.y = 2;

    C1[0] = r_ps;
    C2[0] = j_ps;


    ifstream read("rj.in");
    ofstream write("rj.out");

    int a, b;

    read >> a >> b;

    char sir[a][b];

    for(int i = 0; i < a; i++)
        for(int j = 0; j < b; j++)
            sir[i][j] = ' ';

    ifstream f("rj.in");

    f >> a;

    char temp[100];

    f.getline(temp, 100);

    for(int i=0;i<a;i++)
         {
                f.getline(temp,100);
                for(int j=0;j<b;j++)
                    {
                        if(temp[j]==' ')
                        {
                            m1[i][j]=0;
                            m2[i][j]=0;
                        }else

                        if(temp[j]=='X')
                        {
                            m1[i][j]=-1;
                            m2[i][j]=-1;
                        }else
                        if(temp[j]=='R')
                        {
                            m1[i][j]=1;
                            m2[i][j]=0;
                        }else
                        if(temp[j]=='J')
                        {
                            m2[i][j]=1;
                            m1[i][j]=0;
                        }
                    }
         }

while (prim_r <= ultim_r && prim_j <= ultim_j && m1[p_r.x][p_r.y] != m2[p_j.x][p_r.y])
{
    p_r = C1[prim_r];
    p_j = C2[prim_j];

    prim_r++;
    prim_j++;

    for(int k = 0; k < nrDir; k++)
    {
        v_r.x = p_r.x + dl[k];
        v_r.y = p_r.y + dc[k];

        v_j.x = p_j.x + dl[k];
        v_j.y = p_j.y + dc[k];

        if(m1[v_r.x][v_r.y] == 0)
        {
            m1[v_r.x][v_r.y] = m1[p_r.x][p_r.y] + 1;
            ultim_r++;
            C1[ultim_r] = v_r;
        }

        if(m2[v_j.x][v_j.y] == 0)
        {
            m2[v_j.x][v_j.y] = m2[p_j.x][p_j.y] + 1;
            ultim_j++;
            C2[ultim_j] = v_j;
        }
    }
}

//write<<m1[p_r.x][p_r.y]<< " ";

afiseaza_lc(m1[p_r.x][p_r.y]);
/*
    for(int i =0; i < a; i++)
        {
            for(int j = 0; j < b; j++)
                write<<setw(3) << m1[i][j];
            write << endl;
        }

        write<<endl<<endl;

    for(int i  =0; i < a; i++)
    {
        for(int j = 0; j < b; j++)
            write << setw(3) << m2[i][j];
        write << endl;
    }
*/
}