Pagini recente » Cod sursa (job #2910710) | Cod sursa (job #2370225) | Cod sursa (job #1891077) | Cod sursa (job #579496) | Cod sursa (job #2892577)
#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
ifstream fin("alpin.in");
ofstream fout("alpin.out");
const int di[] = {-1, 0, 1, 0};
const int dj[] = {0, 1, 0, -1};
int n, v[1030][1030], matrDrum[1030][1030], is, js, maxim;
bool inMat(int i, int j) {
return i >= 1 && i <= n && j >= 1 && j <= n;
}
inline int drum(int i, int j) {
if(matrDrum[i][j] != 0) {
return matrDrum[i][j];
}
int dist = 0;
for(int d = 0; d < 4; d++) {
int ii = i + di[d];
int jj = j + dj[d];
if(inMat(ii, jj) && v[ii][jj] > v[i][j]) {
dist = max(dist, drum(ii, jj));
}
}
matrDrum[i][j] = dist + 1;
return matrDrum[i][j];
}
int main() {
fin >> n;
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= n; j++) {
fin >> v[i][j];
}
}
fin.close();
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= n; j++) {
int path = drum(i, j);
if(path > maxim) {
maxim = path;
is = i, js = j;
}
}
}
fout << maxim;
return 0;
}