Ορθογώνια
Στα μέσα του 18ου αιώνα, o ηγέτης Χαν Σαρδάμογλου διέταξε να χτιστεί ένα παλάτι σε ένα οροπέδιο. Το οροπέδιο αναπαρίσταται με ένα πλέγμα αποτελούμενο από x
τετράγωνα. Οι γραμμές του οροπεδίου είναι αριθμημένες από το
μέχρι το
και οι στήλες από το
μέχρι το
. Συμβολίζουμε με (
) το τετράγωνο της γραμμής
και της στήλης
(
,
). Κάθε τετράγωνο (
) έχει ένα συγκεκριμένο ύψος που συμβολίζεται με
.
Ο Χαν ζήτησε από τους αρχιτέκτονές του να επιλέξουν μια ορθογώνια περιοχή για να χτιστεί το παλάτι. Η περιοχή δεν πρέπει να περιέχει τετράγωνο από τα όρια του πλέγματος (γραμμή , γραμμή
, στήλη
, και στήλη
), δηλαδή δεν πρέπει να αγγίζει τις άκρες του πλέγματος. Έτσι, οι αρχιτέκτονες έπρεπε να επιλέξουν τέσσερις
ακέραιους
,
,
και
(
και
), οι οποίοι ορίζουν την περιοχή που περιέχει όλα τα τετράγωνα (
), έτσι ώστε
και
.
Επιπλέον, μια περιοχή θεωρείται έγκυρη, αν και μόνο αν για κάθε τετράγωνο () στη περιοχή ισχύει η παρακάτω συνθήκη:
- Θεωρήστε τα δυο τετράγωνα γειτονικά της περιοχής που βρίσκονται στη γραμμή
(τα τετραγωνάκια (
) και (
)) και τα δυο τετράγωνα γειτονικά της περιοχής που βρίσκονται στη στήλη
(τα τετράγωνα (
) και (
)). Το ύψος του τετραγώνου (
) θα πρέπει να είναι αυστηρά μικρότερο από τα ύψη όλων αυτών των τεσσάρων τετραγώνων.
Βοηθήστε τους αρχιτέκτονες να βρουν το πλήθος των έγκυρων περιοχών για το παλάτι (δηλαδή, το πλήθος των επιλογών των ,
,
και
που ορίζουν έγκυρες περιοχές).
Λεπτομέρειες υλοποίησης
Θα πρέπει να υλοποιήσετε μια συνάρτηση:
int64 count_rectangles(int[][] a)
: ένας διδιάστατος πίνακας
x
ακέραιων που αναπαριστούν τα ύψη των τετραγώνων.
- Αυτή η συνάρτηση πρέπει να επιστρέφει το πλήθος των έγκυρων περιοχών.
Παραδείγματα
Παράδειγμα 1
Έστω ότι έχουμε την ακόλουθη κλήση της συνάρτησης.
count_rectangles([[4, 8, 7, 5, 6],
[7, 4, 10, 3, 5],
[9, 7, 20, 14, 2],
[9, 14, 7, 3, 6],
[5, 7, 5, 2, 7],
[4, 5, 13, 5, 6]])
Υπάρχουν έγκυρες περιοχές:
Για παράδειγμα η περιοχή είναι έγκυρη γιατί ισχύουν οι δυο παρακάτω συνθήκες:
- το
είναι αυστηρά μικρότερο από τα
,
,
και
.
- το
είναι αυστηρά μικρότερο από τα
,
,
και
.
Περιορισμοί
(για κάθε
,
)
Υποπροβλήματα
- (
βαθμοί)
- (
βαθμοί)
- (
βαθμοί)
- (
βαθμοί)
- (
βαθμοί)
- (
βαθμοί)
(για κάθε
,
)
- (
βαθμοί) Κανένας επιπλέον περιορισμός.
Υποδειγματικός βαθμολογητής
Ο υποδειγματικός βαθμολογητής διαβάζει την είσοδο ως εξής:
- γραμμή
:
- γραμμή
(για
):
Ο υποδειγματικός βαθμολογητής τυπώνει μία μόνο γραμμή, που περιέχει την τιμή που επιστρέφει η συνάρτηση count_rectangles.
Comments