PROGRAM NOI_003; CONST N = 7; M = 6; VAR I, J, X0, Y0, X1, Y1, X2, Y2 : INTEGER; D : REAL; P : BOOLEAN; G : ARRAY[0..N, 0..M] OF 0..1; FUNCTION DISP(X1, Y1, X2, Y2 : INTEGER) : REAL; BEGIN DISP := SQRT((X1 - X2) * (X1 - X2) + (Y1 - Y2) * (Y1 - Y2)); END; BEGIN FOR I:=0 TO N DO FOR J:=0 TO M DO G[I, J] := 0; READLN(X1, Y1, X2, Y2); G[X1, Y1] := 1; G[X2, Y2] := 1; P := TRUE; WHILE P DO BEGIN P := FALSE; D := DISP(X1, Y1, X2, Y2); X0 := X1; Y0 := Y1; FOR I:=4 TO N DO FOR J:=0 TO M DO IF (D > DISP(I, J, X2, Y2)) AND (G[I, J] = 0) THEN BEGIN D := DISP(I, J, X2, Y2); X0 := I; Y0 := J; END; IF (X0 <> X1) OR (Y0 <> Y1) THEN BEGIN X1 := X0; Y1 := Y0; P := TRUE; G[X1, Y1] := 1; END; D := DISP(X1, Y1, X2, Y2); X0 := X2; Y0 := Y2; FOR I:=0 TO 3 DO FOR J:=0 TO M DO IF (D < DISP(X1, Y1, I, J)) AND (G[I, J] = 0) THEN BEGIN D := DISP(X1, Y1, I, J); X0 := I; Y0 := J END; IF (X0 <> X2) OR (Y0 <> Y2) THEN BEGIN X2 := X0; Y2 := Y0; P := TRUE; G[X2, Y2] := 1; END; END; WRITELN(X1, Y1, X2, Y2) END.
输入: 7 6 0 0
输出:1