Мой вариант таков:
Program z_1;
Var g:array[1..10] of integer;
p,o,d,i:integer;
Begin
for i:= 1 to 10 do g[i]:=random (21)-10;
for i:= 1 to 10 do write(g[i],',');
writeln;
for i:= 1 to 10 do if g[i]>0 then i:=p;
for i:= 10 downto 1 do if g[i]<0 then i:=o;
d:=g[p];
g[p]:=g[o];
g[o]:=d;
for i:= 1 to 10 do write (g[i]:4);
End.
Скажите пожалуйста, в чём недочёт, не проходит по времени.