File tree Expand file tree Collapse file tree 1 file changed +37
-0
lines changed
Expand file tree Collapse file tree 1 file changed +37
-0
lines changed Original file line number Diff line number Diff line change 1+ ``` cpp
2+ #include < bits/stdc++.h>
3+ using namespace std ;
4+
5+ int N, M;
6+ char arr[1000 ][1000 ]{};
7+ int dp[1000 ][1000 ]{};
8+
9+ int main () {
10+ cin.tie(0)->sync_with_stdio(0);
11+
12+ cin >> N >> M;
13+ int x = 0, y = 0;
14+ for (int i = 0; i < N; i++) for (int j = 0; j < M; j++) {
15+ cin >> arr[i][j];
16+ if (arr[i][j] == 'R') x = i, y = j;
17+ }
18+ for (int i = 0; i < N; i++) for (int j = 0; j <= y; j++) dp[i][j] = -1;
19+ dp[x][y] = 0;
20+ for (int j = y + 1; j < M; j++) for (int i = 0; i < N; i++) {
21+ if (arr[i][j] == '#') {
22+ dp[i][j] = -1;
23+ continue;
24+ }
25+ dp[i][j] = -1;
26+ int c = arr[i][j] == 'C' ? 1 : 0;
27+ if (dp[i][j - 1] != -1) dp[i][j] = dp[i][j - 1] + c;
28+ if (i > 0 && dp[i - 1][j - 1] != -1) dp[i][j] = max(dp[i][j], dp[i - 1][j - 1] + c);
29+ if (i < N - 1 && dp[i + 1][j - 1] != -1) dp[i][j] = max(dp[i][j], dp[i + 1][j - 1] + c);
30+ }
31+
32+ int ans = -1;
33+ for (int i = 0; i < N; i++) for (int j = 0; j < M; j++) if (arr[i][j] == 'O') ans = max(ans, dp[i][j]);
34+ cout << ans;
35+
36+ }
37+ ```
You can’t perform that action at this time.
0 commit comments