Az alábbi letöltési lehetőségek közül választhatsz: (
segítség)
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: us-ascii
Méret: 2 KB
PROGRAM hegyseg;
CONST
inputFile = '';
maxn = 100;
VAR
N, M: INTEGER;
map: ARRAY [1..maxn, 1..maxn] OF RECORD
hi: INTEGER;
max: INTEGER;
END;
PROCEDURE Load;
VAR
T: Text;
i, j: INTEGER;
s: STRING;
BEGIN
Assign(T, inputFile);
Reset(T);
ReadLn(T, N, M);
FOR i:= 1 TO N DO
BEGIN
FOR j:= 1 TO M DO
BEGIN
Read(T, map[i, j].hi);
map[i, j].max:= 0;
END;
ReadLn(T);
END;
END;
FUNCTION Update(i, j, i1, j1: INTEGER): BOOLEAN;
BEGIN
IF (i1 < 1) OR (j1 < 1) OR (i1 > N) OR (j1 > M) THEN
BEGIN
Update:= FALSE;
EXIT;
END;
IF (map[i1, j1].hi < map[i, j].hi) THEN
BEGIN
IF map[i1, j1].max + 1 > map[i, j].max THEN
BEGIN
map[i, j].max:= map[i1, j1].max + 1;
Update:= TRUE;
END
ELSE Update:= FALSE;
END
ELSE Update:= FALSE;
END;
FUNCTION Up0(i, j: INTEGER): BOOLEAN;
VAR
modif: BOOLEAN;
BEGIN
modif:= FALSE;
IF Update(i, j, i+1, j) THEN
BEGIN
modif:= TRUE;
END;
IF Update(i, j, i-1, j) THEN
BEGIN
modif:= TRUE;
END;
IF Update(i, j, i , j+1) THEN
BEGIN
modif:= TRUE;
END;
IF Update(i, j, i , j-1) THEN
BEGIN
modif:= TRUE;
END;
Up0:= modif;
END;
PROCEDURE Process;
VAR
modif: BOOLEAN;
i, j: INTEGER;
max_i, max_j: INTEGER;
BEGIN
REPEAT
modif:= FALSE;
FOR i:= 1 TO N DO
BEGIN
FOR j:= 1 TO M DO
BEGIN
modif:= modif OR Up0(i, j);
END;
END;
UNTIL NOT modif;
max_i:= 1; max_j:= 1;
FOR i:= 1 TO N DO
BEGIN
FOR j:= 1 TO M DO
BEGIN
IF map[i, j].max > map[max_i, max_j].max THEN
BEGIN
max_i:= i;
max_j:= j;
END;
END;
END;
WriteLn(map[max_i, max_j].max);
WriteLn(max_i, ' ', max_j);
END;
BEGIN
Load;
Process;
END.