zoukankan      html  css  js  c++  java
  • B

    Problem description

    A TV show called "Guess a number!" is gathering popularity. The whole Berland, the old and the young, are watching the show.

    The rules are simple. The host thinks of an integer y and the participants guess it by asking questions to the host. There are four types of acceptable questions:

    • Is it true that y is strictly larger than number x?
    • Is it true that y is strictly smaller than number x?
    • Is it true that y is larger than or equal to number x?
    • Is it true that y is smaller than or equal to number x?

    On each question the host answers truthfully, "yes" or "no".

    Given the sequence of questions and answers, find any integer value of y that meets the criteria of all answers. If there isn't such value, print "Impossible".

    Input

    The first line of the input contains a single integer n (1 ≤ n ≤ 10000) — the number of questions (and answers). Next n lines each contain one question and one answer to it. The format of each line is like that: "sign x answer", where the signis:

    • ">" (for the first type queries),
    • "<" (for the second type queries),
    • ">=" (for the third type queries),
    • "<=" (for the fourth type queries).

    All values of x are integer and meet the inequation  - 109 ≤ x ≤ 109. The answer is an English letter "Y" (for "yes") or "N" (for "no").

    Consequtive elements in lines are separated by a single space.

    Output

    Print any of such integers y, that the answers to all the queries are correct. The printed number y must meet the inequation  - 2·109 ≤ y ≤ 2·109. If there are many answers, print any of them. If such value doesn't exist, print word "Impossible" (without the quotes).

    Examples

    Input

    4
    >= 1 Y
    < 3 N
    <= -3 N
    > 55 N

    Output

    17

    Input

    2
    > 100 Y
    < -100 Y

    Output

    Impossible
    解题思路:题意比较简单,就是找出符合要求的区间,然后输出其中任意一个值。如果不满足构成区间的条件,则输出"Impossible"。
    AC代码:
     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int INF = 2e9;
     4 int main(){
     5     int n,x,left=-INF,right=INF;char ch;string eq;//初始值区间满足-2*10^9<=[left,right]<=2*10^9
     6     cin>>n;
     7     while(n--){
     8         getchar();
     9         cin>>eq>>x>>ch;
    10         if(ch=='N'){//修改其值
    11             if(eq==">=")eq="<";
    12             else if(eq=="<=")eq=">";
    13             else if(eq==">")eq="<=";
    14             else eq=">=";
    15         }
    16         if(eq=="<")right=min(right,x-1);//取右端点的最小值
    17         else if(eq=="<=")right=min(right,x);
    18         else if(eq==">")left=max(left,x+1);//取左端点的最大值
    19         else left=max(left,x);
    20     }
    21     if(left>right)cout<<"Impossible"<<endl;//不满足条件
    22     else cout<<left<<endl;//直接输出左端点值(任意值)
    23     return 0;
    24 }
    
    
  • 相关阅读:
    第1章:路线图
    第0章:战胜恐惧和懊悔
    c++ 变量 定义 声明
    两个无符号数相减 可以得到负数
    c++ cast operator(类型转换操作符)
    C++中static 的使用方式,以及与c中的static的区别
    重载overload 重写override 重定义redefining
    用到位运算的题目
    C++ 虚函数表解析
    虚函数 动态绑定 实现方式是:虚函数表
  • 原文地址:https://www.cnblogs.com/acgoto/p/9142504.html
Copyright © 2011-2022 走看看