Алдаркөсе
Алдаркөсе ғимараттардың төбелерінде секіргенді ұнатады. Ол \(n \times m\) өлшемді матрица түрінде көрсетуге болатын қалаға келді, мұнда \(i\)-ші жол мен \(j\)-ші бағанның қиылысында биіктігі \(a_{i,j}\) болатын \((i,j)\) ғимараты орналасқан.
\((i,j)\) ғимаратының төбесінде тұрған кезде, ол кез келген көрші \((i+1,j),(i-1,j),(i,j+1),(i,j-1)\) ғимараттарының төбесіне секіре алады. Алдаркөсе секіретін \((v_1, v_2, \ldots, v_k)\) көршілес ғимараттардың тізбегін жүгіріс деп атаймыз. Жүгірістің ұзындығы — ондағы ғимараттардың саны \(k\) болсын. Алдаркөсе ғимараттардың төбесінде жақсы жүгіріс ұйымдастырғысы келеді. Жүгіріс жақсы деп аталады, егер келесі шарттар орындалса:
ғимараттардың биіктігі қатаң түрде артады, яғни \(v_1 < \ldots < v_k\),
әрбір келесі секіру алдыңғысынан жоғары, яғни \(v_2-v_1 < v_3-v_2 < \ldots < v_k-v_{k-1}\)
Ұзындығы \(1\) болатын кез келген жүгіріс жақсы екенін ескеріңіз. Алдаркөсеге жүгірісті кез келген ғимараттан бастауға болатын болса, жақсы жүгірістің ең үлкен ұзындығын табуға көмектесіңіз.
Input
Бірінші жолда екі бүтін \(n\) және \(m\) (\(1 \le n,m \le 10^3\)) сандары бар – қала өлшемі.
Келесі \(n\) жолдардың әрқайсысында \(m\) сан, \(i\)-шы жолда \(a_{i,1}, \ldots, a_{i,m}\) (\(1 \le a_{i, j} \le 10^9\)) сандары бар – қаладағы ғимараттардың биіктіктері.
Output
Бір бүтін сан шығарыңыз — жақсы жүгірістің ең үлкен ұзындығы.
Sample Input 1
3 3
1 2 6
3 4 9
2 5 10
Sample Output 1
4
Notes
Мысалда ұзындығы ең үлкен жақсы жүгіріс \(1 \rightarrow 2 \rightarrow 4 \rightarrow 9\) болады. Ұзындығы үлкенірек жақсы жүгіріс жоқ екенін көрсетуге болады.
Пікірлер