Pagini recente » Cod sursa (job #2757498) | Cod sursa (job #2873917) | Cod sursa (job #308994) | Cod sursa (job #313186) | Cod sursa (job #3004503)
/*#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;
}