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;
}