Submission #1149213

#TimeUsernameProblemLanguageResultExecution timeMemory
1149213phuonglinhn09T-Covering (eJOI19_covering)C++20
30 / 100
39 ms8520 KiB
/** * 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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...