Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int N = 55;
- int n, m;
- int h[N][N], dp[N][N];
- vector < pair <int, pair <int, int> > > vec;
- int main(){
- cin >> n >> m;
- for (int i = 1; i <= n; i++) {
- for (int j = 1; j <= m; j++) {
- cin >> h[i][j];
- vec.push_back({h[i][j], {i, j}});
- }
- }
- sort(vec.rbegin(), vec.rend());
- for (auto v : vec) {
- int i = v.second.first;
- int j = v.second.second;
- if (i - 1 >= 1 && h[i][j] > h[i - 1][j]) {
- dp[i - 1][j] = max(dp[i - 1][j], dp[i][j] + 1);
- }
- if (i + 1 <= n && h[i][j] > h[i + 1][j]) {
- dp[i + 1][j] = max(dp[i + 1][j], dp[i][j] + 1);
- }
- if (j - 1 >= 1 && h[i][j] > h[i][j - 1]) {
- dp[i][j - 1] = max(dp[i][j - 1], dp[i][j] + 1);
- }
- if (j + 1 <= m && h[i][j] > h[i][j + 1]) {
- dp[i][j + 1] = max(dp[i][j + 1], dp[i][j] + 1);
- }
- }
- cout << dp[1][1] << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement