Submission #1312713

#TimeUsernameProblemLanguageResultExecution timeMemory
1312713penguin133T-Covering (eJOI19_covering)C++20
25 / 100
159 ms23920 KiB
// Source: https://usaco.guide/general/io #include <bits/stdc++.h> using namespace std; using ll = long long; int dx[] = {-1, -1, 0, 1, 1, 1, 0, -1}, dy[] = {0, 1, 1, 1, 0, -1, -1, -1, 0}; void die(){ cout << "No"; exit(0); } int main() { int n, m; cin >> n >> m; ll a[n + 1][m + 1], b[n + 1][m + 1] = {0}, vis[n + 1][m + 1] = {0}; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) cin >> a[i][j]; } int k; cin >> k; while (k--) { int x, y; cin >> x >> y; x++; y++; if (b[x][y]) { cout << "No"; return 0; } b[x][y] = 1; } ll ans = 0; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { if (!b[i][j]) continue; ans += a[i][j]; int c = 0; for (int aa = 0; aa < 8; aa++) { int x1 = i + dx[aa], y1 = j + dy[aa]; if (x1 < 1 || x1 > n || y1 < 1 || y1 > m) continue; if (b[x1][y1]) c++; } if (c >= 2) { cout << "No"; return 0; } if (c) { for (int aa = 0; aa < 8; aa++) { int x1 = i + dx[aa], y1 = j + dy[aa]; if (x1 < 1 || x1 > n || y1 < 1 || y1 > m) continue; if (b[x1][y1]) { if (aa <= 1 || aa == 7) { if (j == 1 || j == m || i == n) die(); ans += a[i][j - 1] + a[i][j + 1] + a[i + 1][j]; } else if (aa == 2) { if (j == 1 || i == 1 || i == n) die(); ans += a[i - 1][j] + a[i][j - 1] + a[i + 1][j]; } else if (aa >= 3 && aa <= 5) { if (i == 1 || j == 1 || j == m) die(); ans += a[i - 1][j] + a[i][j - 1] + a[i][j + 1]; } else { if (i == n || i == 1 || j == m) die(); ans += a[i - 1][j] + a[i + 1][j] + a[i][j + 1]; } } } } else { if ((i == 1 || i == n) && (j == 1 || j == m)) die(); if (i == 1) ans += a[i][j - 1] + a[i][j + 1] + a[i + 1][j]; else if (i == n) ans += a[i][j - 1] + a[i][j + 1] + a[i - 1][j]; else if (j == 1) ans += a[i][j + 1] + a[i + 1][j] + a[i - 1][j]; else if (j == m) ans += a[i][j - 1] + a[i + 1][j] + a[i - 1][j]; else ans += a[i][j - 1] + a[i][j + 1] + a[i - 1][j] + a[i + 1][j] - min({a[i - 1][j], a[i + 1][j], a[i][j - 1], a[i][j + 1]}); } } } cout << ans; }
#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...