code 31201;
procedure LNG INT SUBTRACT(U,V,DIFFERENCE);
integer array U,V,DIFFERENCE;
begin integer LU,LV,DIFF,I,T,J,CARRY;
LU:=U[0]; LV:=V[0];
if LU<LV or LU=LV and U[1]<V[1] then DIFFERENCE[0]:=0 else
begin DIFF:=LU - LV + 1; CARRY:=0;
for I:=LU step -1 until DIFF do
begin T:=U[I] - V[I-DIFF+1] + CARRY;
CARRY:=if T<0 then -1 else 0;
DIFFERENCE[I]:=T - CARRY * 10 000 000
end;
for I:=DIFF - 1 step -1 until 1 do
begin T:=U[I] + CARRY; CARRY:=if T<0 then -1 else 0;
DIFFERENCE[I]:=T - CARRY * 10 000 000
end;
if CARRY=-1 then
begin DIFFERENCE[0]:=0; goto READY end;
I:=0; J:=LU;
for I:=I+1 while DIFFERENCE[I]=0 and J>1 do J:=J-1;
DIFFERENCE[0]:=J;
if J<LU then
for I:=1 step 1 until J do
DIFFERENCE[I]:=DIFFERENCE[LU+I-J]
end;
READY:
end LNG INT SUBTRACT;
eop