Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program B;
- {$APPTYPE CONSOLE}
- uses
- SysUtils;
- Label FindX, FindY;
- var
- n,i, j, k, x1, y1, x2, y2, x3, y3, xH, yH, xL, yL, XV, XVPred, TempX, YHPred, TempY, MaxI, MaxY: Integer;
- A: Array of Integer;
- IsStop1, IsStop2, Int: Boolean;
- Ans: Char;
- begin
- MaxI := 100000;
- MaxY := 100000;
- XV := 50000;
- YL := 0;
- YH := MaxY;
- while not IsStop1 do
- begin
- Writeln('Q', XV, YH, XV, YL);
- Readln(Ans);
- if Ans = '-' then
- begin
- Int := False;
- XV := trunc(XV/2);
- end
- else
- if Ans = '+' then
- begin
- Int := False;
- XV := XV + trunc(XV/2);
- end
- else
- if Ans = 'X' then
- begin
- TempX := XV;
- GoTo FindX;
- end;
- end;
- FindX:
- XV := XV + trunc(XV/2);
- while not IsStop1 do
- begin
- Writeln('Q', XV, YH, XV, YL);
- Readln(Ans);
- if Ans = '-' then
- begin
- Int := False;
- XVPred := XV;
- XV := trunc(XV/2);
- end
- else
- if Ans = '+' then
- begin
- Int := False;
- XVPred := XV;
- XV := XV + trunc(XV/2);
- end
- else
- if Ans = 'X' then
- begin
- if (not Int) and ((XV - XVpred = 1) or (XVPred - XV = 1)) then
- begin
- X1 := XV;
- XV := TempX;
- IsStop1 := True
- end
- else
- begin
- XVPred := XV;
- GoTo FindX;
- end;
- end;
- end;
- XV := XV - trunc(XV/2);
- while not IsStop2 do
- begin
- Writeln('Q ', XV, ' ', YH,' ', XV,' ', YL);
- Readln(Ans);
- if Ans = '-' then
- begin
- Int := False;
- XVPred := XV;
- XV := trunc(XV/2);
- end
- else
- if Ans = '+' then
- begin
- Int := False;
- XVPred := XV;
- XV := XV + trunc(XV/2);
- end
- else
- if Ans = 'X' then
- begin
- if (not Int) and ((XV - XVpred = 1) or (XVPred - XV = 1)) then
- begin
- X2 := XV;
- XV := TempX;
- IsStop2 := True
- end
- else
- begin
- XVPred := XV;
- GoTo FindX;
- end;
- end;
- end;
- IsStop1 := False;
- IsStop2 := False;
- XH := MaxI;
- XL := 0;
- YH := 50000;
- while not IsStop1 do
- begin
- Writeln('Q ', XH, ' ', YH,' ', XL,' ', YH);
- Readln(Ans);
- if Ans = '-' then
- begin
- Int := False;
- YH := trunc(YH/2);
- end
- else
- if Ans = '+' then
- begin
- Int := False;
- YH := YH + trunc(YH/2);
- end
- else
- if Ans = 'X' then
- begin
- TempX := YH;
- GoTo FindX;
- end;
- end;
- FindY:
- YH := YH + trunc(YH/2);
- while not IsStop1 do
- begin
- Writeln('Q ', XH, ' ', YH,' ', XL,' ', YH);
- Readln(Ans);
- if Ans = '-' then
- begin
- Int := False;
- XVPred := YH;
- YH := trunc(YH/2);
- end
- else
- if Ans = '+' then
- begin
- Int := False;
- YHPred := YH;
- YH := YH + trunc(YH/2);
- end
- else
- if Ans = 'X' then
- begin
- if (not Int) and ((YH - YHpred = 1) or (YHPred - YH = 1)) then
- begin
- Y1 := YH;
- YH := TempY;
- IsStop1 := True
- end
- else
- begin
- YHPred := YH;
- GoTo FindY;
- end;
- end;
- end;
- YH := YH - trunc(YH/2);
- while not IsStop2 do
- begin
- Writeln('Q ', XH, ' ', YH,' ', XL,' ', YH);;
- Readln(Ans);
- if Ans = '-' then
- begin
- Int := False;
- YHPred := YH;
- YH := trunc(YH/2);
- end
- else
- if Ans = '+' then
- begin
- Int := False;
- YHPred := XV;
- YH := YH + trunc(YH/2);
- end
- else
- if Ans = 'X' then
- begin
- if (not Int) and ((YH - YHpred = 1) or (YHPred - YH = 1)) then
- begin
- X2 := YH;
- YH := TempY;
- IsStop2 := True
- end
- else
- begin
- YHPred := YH;
- GoTo FindY;
- end;
- end;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement