Cod sursa(job #3004503)

Utilizator KRISTY06Mateiu Ianis Cristian Vasile KRISTY06 Data 16 martie 2023 13:04:25
Problema Rj Scor 0
Compilator cpp-64 Status done
Runda simulare_oji_2023_clasa_10_16_martie Marime 4.36 kb
/*#include <bits/stdc++.h>
using namespace std;

ifstream fin("input.in");
ofstream fout("output.out");

const int MAX_SIZE = 250;
const int MAX_VALUE = 510;

int main() {
    int lines, columns;
    fin >> lines >> columns;
    int matrix[MAX_SIZE + 1][MAX_SIZE + 1];
    for (int line = 1; line <= lines; ++line) {
        for (int column = 1; column <= columns; ++column) {
            fin >> matrix[line][column];
        }
    }
    int invalidColumn = 1, auxInvalidColumn = 1, sum = matrix[1][1];
    for (int line = 2; line <= lines; ++line) {
        int minSum = MAX_VALUE + 1;
        for (int column = 1; column <= columns; ++column) {
            if (matrix[line][column] + matrix[line - 1][column] < minSum && invalidColumn != column && (line != lines || column != columns)) {
                minSum = matrix[line][column] + matrix[line - 1][column];
                auxInvalidColumn = column;
            }
        }
        invalidColumn = auxInvalidColumn;
        sum += minSum;
    }
    fout << sum + matrix[lines][columns];
    return 0;
}*/
#include <bits/stdc++.h>
using namespace std;

ifstream fin("rj.in");
ofstream fout("rj.out");

const int MAX_SIZE = 100;
const int MAX_LENGTH = 1000;

int main() {
    int lines, columns;
    fin >> lines >> columns;
    char matrix[MAX_SIZE + 1][MAX_SIZE + 1 + 1];
    fin.getline(matrix[1], MAX_SIZE + 1 + 1);
    for (int line = 1; line <= lines; ++line) {
        fin.getline(matrix[line], MAX_SIZE + 1 + 1);
    }
    int romeoLine = 0, romeoColumn = 0, julietaLine = 0, julietaColumn = 0;
    for (int line = 1; line <= lines; ++line) {
        for (int column = 1; column <= columns; ++column) {
            if (matrix[line][column] == 'R') {
                romeoLine = line;
                romeoColumn = column;
            }
            if (matrix[line][column] == 'J') {
                romeoLine = line;
                romeoColumn = column;
            }
        }
    }
    int wayLine[MAX_LENGTH + 1], wayColumn[MAX_LENGTH + 1], auxWayLine[MAX_LENGTH + 1], auxWayColumn[MAX_LENGTH + 1];
    int wayLength = 2, auxWayLength = 0;
    wayLine[1] = romeoLine;
    wayLine[2] = romeoColumn;
    wayColumn[1] = julietaLine;
    wayColumn[2] = julietaColumn;
    bool areMeet = 0;
    int minLine = MAX_SIZE, minColumn = MAX_SIZE;
    int length = 1;
    while (areMeet == 0) {
        for (int index = 1; index <= wayLength; ++index) {
            if (wayColumn[index] > 1 && matrix[wayLine[index]][wayColumn[index] - 1] == ' ') {
                auxWayLine[++auxWayLength] = wayLine[index];
                auxWayColumn[auxWayLength] = wayColumn[index] - 1;
            }
            if (wayLine[index] > 1 && matrix[wayLine[index] - 1][wayColumn[index]] == ' ') {
                auxWayLine[++auxWayLength] = wayLine[index] - 1;
                auxWayColumn[auxWayLength] = wayColumn[index];
            }
            if (wayLine[index] < MAX_SIZE && matrix[wayLine[index] + 1][wayColumn[index]] == ' ') {
                auxWayLine[++auxWayLength] = wayLine[index] + 1;
                auxWayColumn[auxWayLength] = wayColumn[index];
            }
            if (wayColumn[index] < MAX_SIZE && matrix[wayLine[index]][wayColumn[index] + 1] == ' ') {
                auxWayLine[++auxWayLength] = wayLine[index];
                auxWayColumn[auxWayLength] = wayColumn[index] + 1;
            }
        }
        for (int index = 1; index <= auxWayLength; ++index) {
            wayLine[index] = auxWayLine[index];
            wayColumn[index] = auxWayColumn[index];
        }
        if (auxWayLength > 0) {
            ++length;
        }
        wayLength = auxWayLength;
        for (int index = 1; index < wayLength; ++index) {
            if (wayLine[index] == wayLine[index + 1] && wayColumn[index] == wayColumn[index + 1] && wayLine[index] < minLine) {
                minLine = wayLine[index];
                minColumn = wayColumn[index];
                areMeet = 1;
            }
             if (wayLine[index] == wayLine[index + 1] && wayColumn[index] == wayColumn[index + 1] && wayLine[index] == minLine && wayColumn[index] < minColumn) {
                minLine = wayLine[index];
                minColumn = wayColumn[index];
                areMeet = 1;
            }
        }
    }
    fout << length << ' ' << minLine << ' ' << minColumn;
    return 0;
}