Advertisement
STANAANDREY

itec 2021 pb3

Mar 4th, 2023
711
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.79 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int NDIRS = 4;
  4. const int dirI[NDIRS] = {0, 0, -1, 1};
  5. const int dirJ[NDIRS] = {1, -1, 0, 0};
  6.  
  7. void lee(vector<vector<int>> &mat, int si, int sj) {
  8.  
  9.     auto isIn = [=](size_t i, size_t j)->bool {
  10.         return i >= 0 && i < mat.size() && j >= 0 && j < mat[0].size();
  11.     };
  12.  
  13.     queue<pair<int, int>> q;
  14.     q.push(make_pair(si, sj));
  15.     while (!q.empty()) {
  16.         int i = q.front().first, j = q.front().second;
  17.         q.pop();
  18.  
  19.         for (int dir = 0; dir < NDIRS; dir++) {
  20.             int newI = i + dirI[dir];
  21.             int newJ = j + dirJ[dir];
  22.  
  23.             if (!isIn(newI, newJ)) {
  24.                 continue;
  25.             }
  26.             if (mat[newI][newJ] > mat[i][j] + 1) {
  27.                 mat[newI][newJ] = mat[i][j] + 1;
  28.                 q.push(make_pair(newI, newJ));
  29.             }
  30.         }
  31.     }
  32. }
  33.  
  34. int solve(vector<vector<int>> mat, int k) {
  35.     const int n = mat.size(), m = mat[0].size();
  36.     for (int i = 0; i < n; i++) {
  37.         for (int j = 0; j < m; j++) {
  38.             if (mat[i][j] == 1) {
  39.                 mat[i][j] = 0;
  40.             } else {
  41.                 mat[i][j] = 1e9;
  42.             }
  43.         }
  44.     }
  45.     for (int i = 0; i < n; i++) {
  46.         for (int j = 0; j < m; j++) {
  47.             if (mat[i][j] == 0) {
  48.                 lee(mat, i, j);
  49.             }
  50.         }
  51.     }
  52.     //for (auto it : mat) { for (int it2 : it) cerr << it2 << ' '; cerr << endl; }
  53.     int ans = 0;
  54.     for (int i = 0; i < n; i++) {
  55.         for (int j = 0; j < m; j++) {
  56.             if (mat[i][j] > k) {
  57.                 ans++;
  58.             }
  59.         }
  60.     }
  61.     return ans;
  62. }
  63.  
  64. int main() {
  65.     vector<vector<int>> a(8, vector<int>(8));
  66.     a[6][6] = a[2][2] = 1;
  67.     cerr << solve(a, 2) << endl;
  68.     return 0;
  69. }
  70.  
Advertisement
Comments
Add Comment
Please, Sign In to add comment
Advertisement