Cod sursa(job #1725284)

Utilizator marius25cCretu Marius marius25c Data 5 iulie 2016 13:00:58
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.73 kb
#include <fstream>
#include <queue>
#include <string>

using namespace std;

ifstream g("rj.in");
ofstream gg("rj.out");

int di[8] = {1,0,-1,0,-1,1,1,-1};
int dj[8] = {1,1,1,-1,-1,0,-1,0};

int N,M,Map[105][105];
char c;
queue < pair <int, int> > coada;

void Read(){
    g>> N >> M;
    g.get(c);
    for(int i = 1; i <= N ; i++)
    {
        int j=0;
        while(g.get(c) && c != '\n')
        {
            j++;
            if(c == ' ')
                Map[i][j] = 0;
            if(c == 'X')
                Map[i][j] = -1;
            if(c == 'R')
            {
                coada.push({i,j});
                Map[i][j] = 1;
            }
            if(c == 'J')
            {
                coada.push({i,j});
                Map[i][j] = 1;
            }
        }
    }
}
bool OK(int i, int j){
    if(i < 1 || j < 1 || i > N || j > N)
        return false;
    if(Map[i][j] == -1)
        return false;
    return true;
}

void Lee(){
    int i,j,i_urmator,j_urmator;
    while( !coada.empty() ){
        i = coada.front().first;
        j = coada.front().second;
        coada.pop();
        for(int directie=0; directie < 8; directie ++){
            i_urmator = i + di[directie];
            j_urmator = j + dj[directie];

        if(OK(i_urmator,j_urmator) && Map[i_urmator][j_urmator] == 0){
            Map[i_urmator][j_urmator] = Map[i][j] + 1;
            coada.push({i_urmator,j_urmator});
            }
        }
    }
    gg<<Map[i][j]<<" "<<i<<" "<<j;
}
void Write(){
    for(int i=1; i<=N; i++){
        for(int j=1; j<=M; j++){
            gg<<Map[i][j]<<" ";
        }
    gg<<"\n";
    }
}
int main()
{
    Read();
    Lee();
   // Write();
    return 0;
}