-
Профи
(660)
1 месяц назад
#include <iostream>
#include <vector>
#include <set>
#include <cmath>
using namespace std;
struct Point {
int row, col;
bool operator<(const Point& other) const {
if (col != other.col) {
return col < other.col;
}
return row < other.row;
}
};
int main() {
int n;
cin >> n;
set<Point> forest;
for (int i = 0; i < n; ++i) {
char colChar;
int row;
cin >> colChar >> row;
int col = colChar - 'A';
forest.insert({row, col});
}
Point fire;
char colChar;
cin >> colChar >> fire.row;
fire.col = colChar - 'A';
int landingCount = 0;
double minDistance = INFINITY;
Point closestLanding;
for (int row = 3; row <= 997; ++row) {
for (int col = 3; col <= 23; ++col) {
bool isLanding = true;
for (int dr = -2; dr <= 2; ++dr) {
for (int dc = -2; dc <= 2; ++dc) {
if (forest.count({row + dr, col + dc})) {
isLanding = false;
break;
}
}
if (!isLanding) break;
}
if (isLanding) {
++landingCount;
double distance = sqrt(pow(row - fire.row, 2) + pow(col - fire.col, 2));
if (distance < minDistance) {
minDistance = distance;
closestLanding = {row, col};
}
}
}
}
cout << landingCount << " " << round(minDistance) << endl;
return 0;
}
Входные данные:
В первой строке входного файла 26.txt находится число N - количество клеток, занятых лесом (натуральное число, не превышающее 10 000).
Каждая из следующих N строк содержит латинскую букву из набора 26 различных букв — обозначение ряда и натуральное число, не превышающих 1000: номер клетки в этом ряду, занятой лесом.
В последней строке вводится латинская буква и натуральное число — координаты клетки, в которой произошло возгорание.
Выходные данные:
Два числа: количество подходящих под условие точек посадки и округленное до целого числа расстояние от ближайшей к точке возгорания точки посадки. Числа разделить пробелом.
Пример входного файла:
4
A 1
C 1
B 2
B 4
B 3
Если считать, что территория ограничена набором из 7 букв от А до G и 7 строк, то под условие посадки подойдут две клетки: Е 4 и Е 5.
Максимально близкая к точке возгорания клетка, доступная для посадки – это Е 4. Расстояние от Е4 до В3 3.16... Округленное до целого значения 3.
Ответ для примера: 2 3