dog.pas

来自「PASCAL光盘资料PASCAL光盘资料PASCAL光盘资料」· PAS 代码 · 共 62 行

PAS
62
字号


program dog;
var
 inn,out:text;
 x,y,d,xr,yr,pl,mi:array[0..100001] of longint;
 i,j,n,plus,minus:longint;
begin
 assign (inn,'dog.in');
 assign (out,'dog.out');

 reset (inn);
 readln (inn,n);
 mi[0]:=maxlongint;
 for i:=1 to n do
    begin
     readln (inn,x[i],y[i],d[i]);
     pl[i]:=pl[i-1];
     if x[i]+y[i]>pl[i] then pl[i]:=x[i]+y[i];
     mi[i]:=mi[i-1];
     if x[i]-y[i]<mi[i] then mi[i]:=x[i]-y[i];
    end;
 {d[n+1]:=maxlongint; x[n+1]:=1000000; y[n+1]:=1000000;}

 close (inn);

 xr[n+1]:=x[n];
 yr[n+1]:=y[n]-d[n];
 d[n+1]:=d[n];
 for i:=n downto 1 do
    begin
     xr[i]:=xr[i+1];
     yr[i]:=yr[i+1]-d[i+1]+d[i];

     {writeln (xr[i],'.',yr[i]);
     readln;}

     for j:=i to i do
        begin
         if xr[i]+yr[i]<pl[j]-d[j] then plus:=pl[j]-d[j]
                                       else plus:=xr[i]+yr[i];
         if xr[i]-yr[i]>mi[j]+d[j] then minus:=mi[j]+d[j]
                                       else minus:=xr[i]-yr[i];
         xr[i]:=(plus+minus)div 2;
         yr[i]:=(plus-minus+1)div 2;

         {writeln (xr[i],' ',yr[i]);
         readln;}

         {x[i]
         y[i]+d[i]}
        end;
    end;

 rewrite (out);
 for i:=1 to n do
    begin
     writeln (out,xr[i],' ',yr[i]);
    end;
 close (out);
end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?