rembocoder

Untitled

Apr 27th, 2023
830
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.30 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define int int64_t
  6.  
  7. int dx[4] = {2, -2, 0, 0}, dy[4] = {0, 0, 2, -2};
  8. string endpoint = "v^><";
  9.  
  10. vector<string> s;
  11. int dp[500][500];
  12. int a[500][500];
  13. int n, m;
  14.  
  15. bool ok(int x, int y) {
  16.     return 0 <= x && x < n && 0 <= y && y < m;
  17. }
  18.  
  19. void dfs(int x, int y) {
  20.     dp[x][y] = a[x][y];
  21.     for (int dir = 0; dir < 4; dir++) {
  22.         int to_x = x + dx[dir];
  23.         int to_y = y + dy[dir];
  24.         if (ok(to_x, to_y) && s[to_x][to_y] == endpoint[dir]) {
  25.             dfs(to_x, to_y);
  26.             dp[x][y] += max(0ll, dp[to_x][to_y]);
  27.         }
  28.     }
  29. }
  30.  
  31. int32_t main() {
  32.     ios_base::sync_with_stdio(false);
  33.     cin.tie(0); cout.tie(0);
  34.     cin >> n >> m;
  35.     s.resize(n);
  36.     for (int i = 0; i < n; i++) {
  37.         cin >> s[i];
  38.     }
  39.     for (int i = 0; i < n; i++) {
  40.         for (int j = 0; j < m; j++) {
  41.             cin >> a[i][j];
  42.         }
  43.     }
  44.     int sx = -1, sy = -1;
  45.     for (int i = 0; i < n; i++) {
  46.         for (int j = 0; j < m; j++) {
  47.             if (s[i][j] == '.') {
  48.                 sx = i;
  49.                 sy = j;
  50.             }
  51.         }
  52.     }
  53.     dfs(sx, sy);
  54.     for (int i = 0; i < n; i++) {
  55.         for (int j = 0; j < m; j++) {
  56.             cerr << dp[i][j] << ' ';
  57.         }
  58.     }
  59.     cout << dp[sx][sy];
  60. }
  61.  
Advertisement
Add Comment
Please, Sign In to add comment