COCI 2008/2009, Contest #1
Task SKAKAVAC
A grasshopper is in a flower field. The field contains N·N flowers arranged in N rows and N columns. For each flower in the field, we know how many petals it has.
The grasshopper is initially on the flower in row R and column C. Its goal is to visit as many flowers as possible while obeying these rules:

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 (r_{1}, c_{1}) to flower (r_{2}, c_{2}) if: r_{1}  r_{2} = 1 and c_{1}  c_{2} > 1 or
 c_{1}  c_{2} = 1 and r_{1}  r_{2} > 1
 The number of petals on the next flower must be strictly larger than the number of petals on the previous flower.
Input
The first line contains the integer N (1 ≤ N ≤ 1500), the size of the field.The second line contains integers R (1 ≤ R ≤ N) and C (1 ≤ C ≤ N), the grasshopper's initial position.
The next N lines contain N positive integers separated by spaces, each less than 1 000 000, the numbers of petals on the flowers.
Output
Output a single integer—the largest number of flowers the grasshopper can visit.Grading
In test data worth 50% of points, N will be at most 100.In test data worth 80% of points, N will be at most 1000.
Examples
Input4 1 1 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7 Output4 
Input5 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 Output21 
All Submissions
Best Solutions
Point Value: 30 (partial)
Time Limit: 4.00s
Memory Limit: 35M
Added: Oct 18, 2008
Languages Allowed:
C++03, PAS, C, HASK, ASM, RUBY, PYTH2, JAVA, PHP, SCM, CAML, PERL, C#, C++11, PYTH3
Comments (Search)
This information is listed in the README.
What did the people who solved it use ? Or the observations they made ?
Find another way that only processes each location on the grid once.