## COCI '08 Contest 1 #5 Skakavac

View as PDF

Points: 20 (partial)
Time limit: 1.8s
Memory limit: 35M

Problem type
Allowed languages
Ada, Assembly, Awk, Brain****, C, C#, C++, COBOL, CommonLisp, D, Dart, F#, Forth, Fortran, Go, Groovy, Haskell, Intercal, Java, JS, Kotlin, Lisp, Lua, Nim, ObjC, OCaml, Octave, Pascal, Perl, PHP, Pike, Prolog, Python, Racket, Ruby, Rust, Scala, Scheme, Sed, Swift, TCL, Text, Turing, VB, Zig

A grasshopper is in a flower field. The field contains flowers arranged in rows and columns. For each flower in the field, we know how many petals it has.

The grasshopper is initially on the flower in row and column . Its goal is to visit as many flowers as possible while obeying these rules:

1. It can only jump into an adjacent row or column. If it jumps into the adjacent row, it must jump at least two columns, and if it jumps into the adjacent column, it must jump at least two rows.

In other words, it can jump from flower to flower if:

• and or
• and
1. The number of petals on the next flower must be strictly larger than the number of petals on the previous flower.

Write a program that calculates the largest number of flowers the grasshopper can visit.

#### Input Specification

The first line contains the integer , the size of the field.

The second line contains integers and , the grasshopper's initial position.

The next lines contain positive integers separated by spaces, each less than , the numbers of petals on the flowers.

#### Output Specification

Output a single integer – the largest number of flowers the grasshopper can visit.

In test data worth of points, will be at most . In test data worth of points, will be at most .

#### Sample Input

4
1 1
1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 7

#### Sample Output

4

#### Sample Input

5
3 3
20 16 25 17 12
11 13 13 30 17
15 29 10 26 11
27 19 14 24 22
23 21 28 18 13

#### Sample Output

21