zoukankan      html  css  js  c++  java
  • Guess a number! CodeForces

              

     

         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 sign is:

    • ">" (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).

    Example

    Input
    4
    >= 1 Y
    < 3 N
    <= -3 N
    > 55 N
    Output
    17
    Input
    2
    > 100 Y
    < -100 Y
    Output
    Impossible

    根据输入的数据不断更新区间的左右端点,注意更新是有效的!!!
     1 #include<iostream>
     2 #include<algorithm>
     3 #include<cstdio>
     4 #include<string>
     5 using namespace std;
     6 
     7 typedef long long ll;
     8 static const int INF=2e9+5;
     9 
    10 int main()
    11 {   int n;
    12     while(~scanf("%d",&n)){
    13         string s,s1,a,b,c,d,e;
    14         a=">=",b=">",c="<=",d="<",e="Y";
    15         ll x,l=-INF,r=INF;     
    16         for(int i=1;i<=n;i++){
    17             cin>>s>>x>>s1;
    18             if(s==a){
    19                 if(s1==e) l=max(l,x);
    20                 else r=min(r,x-1); 
    21             }
    22             if(s==b){
    23                 if(s1==e) l=max(l,x+1);
    24                 else r=min(r,x); 
    25             }
    26             if(s==c){
    27                 if(s1==e) r=min(r,x);
    28                 else l=max(l,x+1);
    29             }
    30             if(s==d){
    31                 if(s1==e) r=min(r,x-1);
    32                 else l=max(l,x);
    33             }
    34         }
    35         if(l>r) printf("Impossible
    ");
    36         else{
    37              if((l+r)%2==0) printf("%lld
    ",(l+r)/2);
    38              else printf("%lld
    ",(l+r+1)/2);
    39         }
    40     }
    41 }
  • 相关阅读:
    J
    I
    uva122 二叉树的实现和层次遍历(bfs)
    A
    HDU 波峰
    2239: 童年的圣诞树
    1734: 堆(DFS)
    1731: 矩阵(前缀和)
    1733: 旋转图像(模拟)
    1728: 社交网络(概率问题 组合数/排列数)
  • 原文地址:https://www.cnblogs.com/zgglj-com/p/6743498.html
Copyright © 2011-2022 走看看