Official
B - Distance Between Tokens Editorial by en_translator
Suppose that one piece is at the \(a\)-th row and the \(b\)-th column, and the other is at the \(c\)-th row and the \(d\)-th column. Then, the answer is \(|a - c| + |b - d|\). Therefore, all that left is to determine the square containing pieces, which can be implemented with for
and if
statements.
Sample code (C++):
#include <bits/stdc++.h>
using namespace std;
int main() {
int h, w;
cin >> h >> w;
vector<pair<int, int>> pieces;
for (int i = 0; i < h; ++i) {
for (int j = 0; j < w; ++j) {
char c;
cin >> c;
if (c == 'o') {
pieces.emplace_back(i, j);
}
}
}
const auto& [a, b] = pieces[0];
const auto& [c, d] = pieces[1];
cout << abs(a - c) + abs(b - d) << '\n';
return 0;
}
Sample code (Python)
h, w = map(int, input().split())
s = [input() for _ in range(h)]
pieces = []
for i in range(h):
for j in range(w):
if s[i][j] == 'o':
pieces.append((i, j))
a, b = pieces[0]
c, d = pieces[1]
print(abs(a - c) + abs(b - d))
posted:
last update: