Maksimumu tapın (funksiyanın)
Verilmiş sahə n * m ölçüsündə kvadratlara bölünmüşdür. Sətirlər yuxarıdan aşağıya doğru 1-dən n-ə qədər, sütunlar isə soldan sağa doğru 1-dən m-ə qədər nömrələnmişdir. Robotunuz (1; 1) hüceyrəsində yerləşir.
Hər bir hüceyrədə müəyyən bir rəqəm yazılmışdır və robot yalnız yerləşdiyi hüceyrədəki rəqəmi görə bilir. Robot sola, sağa, aşağı və yuxarı hərəkət edə bilər, lakin sahənin ölçülərini bilmir.
Robotdan istifadə edərək sahədəki bütün rəqəmlərin maksimumunu tapın.
Əlaqə Protokolu
Aşağıdakı funksiyanı həyata keçirməlisiniz:
integer solve()
bu funksiya sahədəki maksimum rəqəmi qaytarmalıdır.
Aşağıdakı funksiyalardan istifadə edə bilərsiniz:
integer getValue()
bu funksiya robotun yerləşdiyi hüceyrədəki rəqəmi qaytarır.
boolean canMoveLeft()
boolean canMoveRight()
boolean canMoveUp()
boolean canMoveDown()
bu funksiyaların hər biri, əgər robot müəyyən istiqamətdə hərəkət edə bilirsə (yəni o, həmin istiqamətdə hərəkət edərkən sahədən çıxmayacaqsa) true, əks halda false qaytarır.
void moveLeft()
void moveRight()
void moveUp()
void moveDown()
bu funksiyaların hər biri robotu müəyyən istiqamətdə bir mövqeyə hərəkət etdirir.
Giriş Məlumatlarının Formatı
Birinci sətir sahənin ölçüləri olan iki tam ədəd n və m (1 ⩽ n;m ⩽ 100) ehtiva edir.
Növbəti n sətirin hər biri m tam ədəd a[i1]
; a[i2]
; ... ; a[im]
(0 ⩽ |a[ij]|
⩽ 10^9
) ehtiva edir — sahədəki rəqəmlər.
Çıxış Məlumatlarının Formatı
Bütün rəqəmlərin maksimumu olan bir tam ədəd çıxarılacaq.
Nümunə
Tutaq ki, n = 2, m = 3 və
a =
1 3 4
8 1 5
Əgər robot (1; 1) hüceyrəsindədirsə, canMoveLeft və canMoveUp funksiyaları false qaytaracaq, canMoveRight və canMoveDown isə true qaytaracaq. Əgər həmin mövqedə getValue funksiyasını çağırsanız, o, 1 qaytaracaq.
Əgər moveDown funksiyasını çağırsanız, robotunuz (2; 1) mövqeyində olacaq. O zaman canMoveDown funksiyası false, getValue isə 8 qaytaracaq.
Nümunə məsələni həll etmir, yalnız funksiyaların necə istifadə olunacağını göstərir.
Bloklar: 1. (50 bala qədər) n ⩽ 1;
c — dəqiq cavabı tapmaq üçün lazım olan minimal hərəkət sayı, t isə bütün testlərdə etdiyiniz maksimal hərəkət sayı olduğunu fərz etsək, max(⌊50 - sqrt( t - c)⌋; 0) bal alacaqsınız;
(50 bala qədər) əlavə məhdudiyyətlər olmadan;
c — dəqiq cavabı tapmaq üçün lazım olan minimal hərəkət sayı, t isə bütün testlərdə etdiyiniz maksimal hərəkət sayı olduğunu fərz etsək, max(⌊50 - pow(1/3.0,(t-c))⌋; 0) bal alacaqsınız.