/**
* 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;
map<pair<int, int>, vector<pair<int, int>>> adj;
int dx[4] = {0, 0, 1, -1};
int dy[4] = {1, -1, 0, 0};
bool check (int x, int y) {
return x >= 0 && x < n && y >= 0 && y < m && !vis[x][y];
}
int sum, cnt1, cnt2;
int mi = 1e9 + 1;
void dfs(int u, int v) {
vis[u][v] = 1;
sum += a[u][v];
cnt2++;
for (int i = 0; i < 4; i++) {
int x = u + dx[i], y = v + dy[i];
if (check(x, y)) {
mi = min (mi, a[x][y]);
sum += a[x][y];
cnt1++;
if (tplt[x][y] != 2) vis[x][y] = 1;
}
}
for (auto [i, j]:adj[{u, v}]) {
if (!vis[i][j]) {
dfs(i, j);
}
}
}
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;
vector<pair<int, int>> pos;
int x, y;
while (k--) {
cin >> x >> y;
pos.emplace_back(x, y);
tplt[x][y] = 2;
}
sort (pos.begin(), pos.end());
int dx1[12] = {0, 0, -2, 2, -1, 0, 1, -1, 1, -1, 0, 1};
int dy1[12] = {-2, 2, 0, 0, -1, -1, -1, 0, 0, 1, 1, 1};
for (auto [u, v]:pos) {
for (int j = 0; j < 12; j++) {
int r = u + dx1[j], c = v + dy1[j];
if (r >= 0 && r < n && c >= 0 && c < m && tplt[r][c] == 2) {
adj[{u, v}].emplace_back(r, c);
adj[{r, c}].emplace_back(u, v);
}
}
}
int ans = 0;
for (auto [i, j]:pos) {
if (!vis[i][j]) {
sum = cnt1 = cnt2 = 0;
mi = 1e9 + 1;
dfs(i, j);
if (cnt1 < cnt2 * 3) sum = -1;
else if (cnt1 == cnt2 * 3) sum = sum;
else sum -= mi;
if (sum == -1) return cout << "No", 0;
else ans += sum;
}
}
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... |