Advertisement
Guest User

Untitled

a guest
Feb 18th, 2018
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 5.17 KB | None | 0 0
  1. program B;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6.   SysUtils;
  7.  
  8. Label FindX, FindY;
  9.  
  10. var
  11.    n,i, j, k, x1, y1, x2, y2, x3, y3, xH, yH, xL, yL, XV, XVPred, TempX, YHPred, TempY, MaxI, MaxY: Integer;
  12.    A: Array of Integer;
  13.    IsStop1, IsStop2, Int: Boolean;
  14.    Ans: Char;
  15.  
  16. begin
  17.    MaxI := 100000;
  18.    MaxY := 100000;
  19.    XV := 50000;
  20.    YL := 0;
  21.    YH := MaxY;
  22.    while not IsStop1 do
  23.    begin
  24.       Writeln('Q', XV, YH, XV, YL);
  25.       Readln(Ans);
  26.       if Ans = '-' then
  27.       begin
  28.          Int := False;
  29.          XV := trunc(XV/2);
  30.       end
  31.       else
  32.          if Ans = '+' then
  33.          begin
  34.             Int := False;
  35.             XV := XV + trunc(XV/2);
  36.          end
  37.          else
  38.             if Ans = 'X' then
  39.             begin
  40.                TempX := XV;
  41.                GoTo FindX;
  42.             end;
  43.    end;
  44.  
  45.    FindX:
  46.       XV := XV + trunc(XV/2);
  47.       while not IsStop1 do
  48.       begin
  49.          Writeln('Q', XV, YH, XV, YL);
  50.          Readln(Ans);
  51.          if Ans = '-' then
  52.          begin
  53.             Int := False;
  54.             XVPred := XV;
  55.             XV := trunc(XV/2);
  56.          end
  57.          else
  58.             if Ans = '+' then
  59.             begin
  60.                Int := False;
  61.                XVPred := XV;
  62.                XV := XV + trunc(XV/2);
  63.             end
  64.             else
  65.                if Ans = 'X' then
  66.                begin
  67.                   if (not Int) and ((XV - XVpred = 1) or (XVPred - XV = 1)) then
  68.                   begin
  69.                      X1 := XV;
  70.                      XV := TempX;
  71.                      IsStop1 := True
  72.                   end
  73.                   else
  74.                   begin
  75.                      XVPred := XV;
  76.                      GoTo FindX;
  77.                   end;
  78.                end;
  79.       end;
  80.  
  81.       XV := XV - trunc(XV/2);
  82.       while not IsStop2 do
  83.       begin
  84.          Writeln('Q ', XV, ' ', YH,' ', XV,' ', YL);
  85.          Readln(Ans);
  86.          if Ans = '-' then
  87.          begin
  88.             Int := False;
  89.             XVPred := XV;
  90.             XV := trunc(XV/2);
  91.          end
  92.          else
  93.             if Ans = '+' then
  94.             begin
  95.                Int := False;
  96.                XVPred := XV;
  97.                XV := XV + trunc(XV/2);
  98.             end
  99.             else
  100.                if Ans = 'X' then
  101.                begin
  102.                   if (not Int) and ((XV - XVpred = 1) or (XVPred - XV = 1)) then
  103.                   begin
  104.                      X2 := XV;
  105.                      XV := TempX;
  106.                      IsStop2 := True
  107.                   end
  108.                   else
  109.                   begin
  110.                      XVPred := XV;
  111.                      GoTo FindX;
  112.                   end;
  113.                end;
  114.       end;
  115.  
  116.  
  117.    IsStop1 := False;
  118.    IsStop2 := False;
  119.    XH := MaxI;
  120.    XL := 0;
  121.    YH := 50000;
  122.    while not IsStop1 do
  123.    begin
  124.       Writeln('Q ', XH, ' ', YH,' ', XL,' ', YH);
  125.       Readln(Ans);
  126.       if Ans = '-' then
  127.       begin
  128.          Int := False;
  129.          YH := trunc(YH/2);
  130.       end
  131.       else
  132.          if Ans = '+' then
  133.          begin
  134.             Int := False;
  135.             YH := YH + trunc(YH/2);
  136.          end
  137.          else
  138.             if Ans = 'X' then
  139.             begin
  140.                TempX := YH;
  141.                GoTo FindX;
  142.             end;
  143.    end;
  144.  
  145.    FindY:
  146.       YH := YH + trunc(YH/2);
  147.       while not IsStop1 do
  148.       begin
  149.          Writeln('Q ', XH, ' ', YH,' ', XL,' ', YH);
  150.          Readln(Ans);
  151.          if Ans = '-' then
  152.          begin
  153.             Int := False;
  154.             XVPred := YH;
  155.             YH := trunc(YH/2);
  156.          end
  157.          else
  158.             if Ans = '+' then
  159.             begin
  160.                Int := False;
  161.                YHPred := YH;
  162.                YH := YH + trunc(YH/2);
  163.             end
  164.             else
  165.                if Ans = 'X' then
  166.                begin
  167.                   if (not Int) and ((YH - YHpred = 1) or (YHPred - YH = 1)) then
  168.                   begin
  169.                      Y1 := YH;
  170.                      YH := TempY;
  171.                      IsStop1 := True
  172.                   end
  173.                   else
  174.                   begin
  175.                      YHPred := YH;
  176.                      GoTo FindY;
  177.                   end;
  178.                end;
  179.       end;
  180.  
  181.       YH := YH - trunc(YH/2);
  182.       while not IsStop2 do
  183.       begin
  184.          Writeln('Q ', XH, ' ', YH,' ', XL,' ', YH);;
  185.          Readln(Ans);
  186.          if Ans = '-' then
  187.          begin
  188.             Int := False;
  189.             YHPred := YH;
  190.             YH := trunc(YH/2);
  191.          end
  192.          else
  193.             if Ans = '+' then
  194.             begin
  195.                Int := False;
  196.                YHPred := XV;
  197.                YH := YH + trunc(YH/2);
  198.             end
  199.             else
  200.                if Ans = 'X' then
  201.                begin
  202.                   if (not Int) and ((YH - YHpred = 1) or (YHPred - YH = 1)) then
  203.                   begin
  204.                      X2 := YH;
  205.                      YH := TempY;
  206.                      IsStop2 := True
  207.                   end
  208.                   else
  209.                   begin
  210.                      YHPred := YH;
  211.                      GoTo FindY;
  212.                   end;
  213.                end;
  214.       end;
  215.  
  216. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement