View Code of Problem 17

#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
#include<bits/stdc++.h>
using namespace std;
int arr[1000][1000];
int res = 0;
void walk( int i,int j,int num) {
	if (arr[i + 1][j] > arr[i][j])walk(i + 1, j, num + 1);
	if (arr[i - 1][j] > arr[i][j])walk(i - 1, j, num + 1);
	if (arr[i][j+1] > arr[i][j])walk(i , j+1, num + 1);
	if (arr[i][j-1] > arr[i][j])walk(i , j-1, num + 1);

	if (num > res) {
		res = num;
	}
	
	
}
int main()
{
	int n, m;
	while (cin >> n >> m) {
		memset(arr, 0, sizeof(arr));
		res = 0;
		for(int i=1;i<=n;i++){
			for (int j = 1; j <= m; j++) {
				cin >> arr[i][j];
			}
		}
		for (int i = 1; i <= n; i++) {
			for (int j = 1; j <= m; j++) {
				walk( i, j, 0);
			}
		}
		cout << res << endl;
	}
	
	return 0;
}

Double click to view unformatted code.


Back to problem 17