2017.6.4测试 题四 猜数

时间:2021-09-18 19:15:53

2017.6.4测试 题四 猜数

2017.6.4测试 题四 猜数

var
 s,ss:string;
 n,x,k,i,j,h,t:longint;
 ans:char;
function max(a,b:longint):longint;
begin
 if a>b then exit(a);
 exit(b);
end;
function min(a,b:longint):longint;
begin
 if a<b then exit(a);
 exit(b);
end;
begin
 readln(n);
 h:=-2333333;t:=2333333;//用作比大小
 for i:=1 to n do
  begin
   readln(s);
   k:=pos(' ',s);//分离出大于、小于或等于符号
   ss:=copy(s,1,k-1);
   delete(s,1,k);
   k:=pos(' ',s);//分离出数字
   val(copy(s,1,k-1),x);
   ans:=s[k+1];
   if ans='N' then//如果是'N'的话,就得把符号反转(不包括它的所有情况)
    begin
     if ss='>' then ss:='<='
               else if ss='<' then ss:='>='
                              else if ss='>=' then ss:='<'
                                              else if ss='<=' then ss:='>';
    end;
   if ss='>' then h:=max(h,x+1);//最小也要比x大1
   if ss='>=' then h:=max(h,x);//最小就相同
   if ss='<' then t:=min(t,x-1);//最大顶多比x小1
   if ss='<=' then t:=min(t,x);//最大就相同
  end;
 if h<=t then writeln(h)//如果满足所有大于(等于)的,也满足所有小于(等于)的,它就是最小的(选h是因为它每次比较都是选最小的比,不停动态规划成最小了)
         else writeln('Impossible');
end.