Submission
Status:
[-SSSSSSSSSSSSSS]
Score: 0
User: AungS8430
Problemset: อัศวินขี่ม้าขาว
Language: cpp
Time: 0.003 second
Submitted On: 2025-03-16 20:26:02
#include <bits/stdc++.h>
using namespace std;
int main(void) {
int n, m, k = 0;
cin >> n >> m;
vector<vector<pair<int, int>>> grid(n, vector<pair<int, int>> (m, pair<int, int> {0, 0}));
for (int i = 0; i < n; i++) {
for (int j = 0; j < m;j++) {
int x, y;
cin >> x;
if (i != 0 || j != 0) {
if (i == 0) {
x = grid[i][j - 1].first + x;
y = grid[i][j - 1].second;
} else if (j == 0) {
x = grid[i - 1][j].first + x;
y = grid[i - 1][j].second;
} else {
if (grid[i - 1][j].second == grid[i][j - 1].second) {
x = max(grid[i - 1][j].first, grid[i][j - 1].first) + x;
y = grid[i - 1][j].second;
} else if (grid[i - 1][j].second > grid[i][j - 1].second) {
x = grid[i][j - 1].first + x;
y = grid[i][j - 1].second;
} else {
x = grid[i - 1][j].first + x;
y = grid[i - 1][j].second;
}
}
}
//cout << x << " " << y << " ";
if (x < 1) {
y += 1 - x;
x = 1;
}
grid[i][j] = {x, y};
}
}
//for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {cout << "{" << grid[i][j].first << "," << grid[i][j].second << "}";} cout << endl;}
cout << grid[n - 1][m - 1].second;
return 0;
}