/**
* author: phuonglinhn09
* created: 11.02.2025
*/
#include <bits/stdc++.h>
#define fi first
#define se second
using namespace std;
typedef long long ll;
int n, m, k;
vector<vector<int>> a, tplt;
vector<vector<bool>> vis;
int dx[4] = {0, 0, 1, -1}, dy[4] = {1, -1, 0, 0};
bool check (int x, int y) {
return x >= 0 && x < n && y >= 0 && y < m && tplt[x][y] != 0 && !vis[x][y];
}
int main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin >> n >> m;
a.resize(n + 5);
tplt.resize(n + 5);
vis.resize(n + 5);
for (int i = 0; i < n; i++) {
a[i].resize(m + 5, 0);
tplt[i].resize(m + 5, 0);
vis[i].resize(m + 5, 0);
for (int j = 0; j < m; j++) {
cin >> a[i][j];
}
}
cin >> k;
int x, y;
while (k--) {
cin >> x >> y;
tplt[x][y] = 2;
int row, col;
for (int i = 0; i < 4; i++) {
row = x + dx[i], col = y + dy[i];
if (row >= 0 && row < n && col >= 0 && col < m) {
tplt[row][col] = 1;
}
}
}
queue<pair<int, int>> q;
int sum, mi, cnt1, cnt2;
int ans = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (tplt[i][j] != 0 && !vis[i][j]) {
sum = cnt1 = cnt2 = 0;
mi = 1e9 + 1;
q.emplace(i, j);
while (!q.empty()) {
auto [row, col] = q.front();
q.pop();
for (int i = 0; i < 4; i++) {
x = row + dx[i], y = col + dy[i];
if (check(x, y)) {
mi = min (mi, a[x][y]);
sum += a[x][y];
cnt1 += tplt[x][y] == 1;
cnt2 += tplt[x][y] == 2;
vis[x][y] = 1;
q.emplace(x, y);
}
}
}
if (cnt1 < cnt2 * 3) return cout << "No", 0;
else if (cnt1 == cnt2 * 3) ans += sum;
else ans += sum - mi;
}
}
}
cout << ans;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |