DECLARE SUB RAZM (NU, X AS INTEGER, Y AS INTEGER) DIM N, M AS INTEGER OPEN "INPUT.TXT" FOR INPUT AS #1 OPEN "OUTPUT.TXT" FOR OUTPUT AS #2 INPUT #1, N INPUT #1, M DIM L(M) AS INTEGER DIM X3(M) AS INTEGER DIM Y3(M) AS INTEGER FOR I = 1 TO M INPUT #1, L(I) NEXT I CALL RAZM(0, 0, 0) FOR T = 1 TO M IF X3(T) < XMIN THEN XMIN = X3(T) IF Y3(T) < YMIN THEN YMIN = Y3(T) IF X3(T) > XMAX THEN XMAX = X3(T) IF Y3(T) > YMAX THEN YMAX = Y3(T) NEXT T IF FLAG = 1 THEN FOR I = 1 TO M PRINT #2, X3(I) + ABS(XMIN); Y3(I) + ABS(YMIN) NEXT I ELSE PRINT #2, -1 END IF CLOSE #1, #2 SYSTEM SUB RAZM (NU, X AS INTEGER, Y AS INTEGER) SHARED FLAG IF FLAG = 1 THEN GOTO 7 SHARED L() AS INTEGER SHARED X3() AS INTEGER SHARED Y3() AS INTEGER SHARED P AS INTEGER SHARED N, M AS INTEGER '======================================== P = 1 XX = L(NU) YY = 0 2 IF XX < YY THEN GOTO 3 IF XX ^ 2 + YY ^ 2 > L(NU) THEN XX = XX - 1 IF XX ^ 2 + YY ^ 2 < L(NU) THEN YY = YY + 1 F = XX ^ 2 + YY ^ 2 IF F = L(NU) THEN X1 = XX: Y1 = YY: XX = XX - 1: YY = YY - 1 END IF GOTO 2 3 '======================================================== IF NU < M THEN X2 = X1 Y2 = Y1 '--------------------------- FOR I = 1 TO 4 IF I = 2 THEN X2 = -X2 IF I = 3 THEN X2 = -X2: Y2 = -Y2 IF I = 4 THEN X2 = -X2 X3(NU) = X Y3(NU) = Y CALL RAZM(NU + 1, X3(NU) + X2, Y3(NU) + Y2) NEXT I ELSE POL = X ^ 2 + Y ^ 2 IF POL = L(NU) THEN X3(NU) = X: Y3(NU) = Y FOR T = 1 TO M IF X3(T) < XMIN THEN XMIN = X3(T) IF Y3(T) < YMIN THEN YMIN = Y3(T) IF X3(T) > XMAX THEN XMAX = X3(T) IF Y3(T) > YMAX THEN YMAX = Y3(T) NEXT T IF (YMAX + ABS(YMIN)) <= N AND (XMAX + ABS(XMIN)) <= N THEN FLAG = 1 END IF END IF 7 END SUB