• 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 }
    
    
  • 相关阅读:
    星辰小队针对于软件“星遇”的10天冲刺——第2天
    石家庄地铁路线安排网站的最终版本——博客登记
    星辰小队针对于软件“星遇”的10天冲刺——第1天
    单词统计——基本Java实现(无特殊设置)
    周周总结——时时更新(第4学期,第10周)
    构建之法阅读笔记04
    用户模板和用户场景(星遇)
    周周总结——时时更新(第4学期,第9周)
    ios创建bundle的图片资源文件(转)
    GCD的多线程实现方式,线程和定时器混合使用
  • 原文地址:https://www.cnblogs.com/acgoto/p/9142504.html
Copyright © 2020-2023  润新知