COCI '14 Contest 2 #4 Bob

View as PDF

Submit solution

Points: 20 (partial)
Time limit: 0.6s
Memory limit: 64M

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

Little Bob is a famous builder. He bought land and wants to build a house. Unfortunately, the problem is the land's terrain, it has a variable elevation.

The land is shaped like a rectangle, N meters wide and M meters long. It can be divided into N \cdot M squares (see the image). Bob's house will be shaped like a rectangle that has sides parallel with the land's edges and its vertices coincide with the vertices of the squares. All the land covered by Bob's house must be of equal elevation to prevent it from collapsing.

222
221
111
212
121
The land divided into squares.
Two possible locations of house are marked with red and blue.

Calculate the number of ways Bob can build his house!

Input

The first line of input contains integers N and M (1 \le N, M \le 1\,000). Each of the following N lines contains M integers a_{ij} (1 \le a_{ij} \le 10^9), respectively the height of each square of land.

Warning: Please use faster input methods beacuse the amount of input is very large. (For example, use scanf instead of cin in C++ or BufferedReader instead of Scanner in Java.)

Output

The first and only line of output must contain the required number from the task statement.

Scoring

In test cases worth 20% of total points, it will hold N, M \le 50.

In test cases worth 60% of total points, it will hold N, M \le 500.

Sample Input 1

5 3
2 2 2
2 2 1
1 1 1
2 1 2
1 2 1

Sample Output 1

27

Explanation for Sample Output 1

Some of the possible house locations are rectangles with opposite vertices in (0,0)-(1,1), (0,0)-(0,2) (height 2) and (2,0)-(2,2), (1,2)-(2,2) (height 1). The first number in the brackets represents the row number and the second one the column number (0-indexed).

Sample Input 2

4 3
1 1 1
1 1 1
2 2 2
2 2 2

Sample Output 2

36

Comments

There are no comments at the moment.