Official
B - Distance Between Tokens Editorial by KoD
一方の駒が \(a\) 行目 \(b\) 列目のマスに置かれており、もう一方の駒が \(c\) 行目 \(d\) 列目に置かれているとします。このとき、\(|a - c| + |b - d|\) が答えとなります。よって、駒が置かれているマス目を特定することができればよく、これは for
文や if
文を用いて実装することができます。
実装例 (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;
}
実装例 (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: