猜数字(模拟)

猜数字(模拟)

题目描述:

猜数字游戏啦!给你如下四种提示:

(1)这个数严格大于x吗?

(2)这个数严格小于x吗?

(3)这个数大于等于x吗?

(4)这个数小于等于x吗?

每个提示,都会给出相应的答案,yes或者no。

如果有多个数满足条件,输出最小的。如果不存在这样的数,输出“Impossible”。

输入格式:

第一行输入一个整数n。

接下来n行,每行一个字符串“sign x answer”,是四个提示的中的一个。

sign是“>”,"<","<=",">="; answer 是“Y”或者"N" ;

如(1)就会有类似这样的字符串“  > x Y” 或者“ > x N”;

输出格式:

如果最终的答案有下界的,则输出这个下界
如果存在答案,但是答案没有下界,输出-2000000000
否则输出“Impossible”

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     int a,xx=-21842,sx=999999; //下限和上限
 7     cin>>a;
 8     for(int i=0;i<a;i++)
 9     {
10         string s;
11         int b;
12         cin>>s;
13         if(s==">")
14         {
15             cin>>b;
16             cin>>s;
17             if(s=="Y")
18             {
19                 if(xx<b+1) xx=b+1; //改下限
20             }
21             else
22             {
23                 if(sx>b) sx=b; //改上限
24             }
25         }
26         else if(s=="<")
27         {
28             cin>>b;
29             cin>>s;
30             if(s=="Y")
31             {
32                 if(sx>b-1) sx=b-1; //改上限
33             }
34             else
35             {
36                 if(xx<b) xx=b; //改下限
37             }
38         }
39         else if(s==">=")
40         {
41             cin>>b;
42             cin>>s;
43             if(s=="Y")
44             {
45                 if(xx<b) xx=b; //改下限
46             }
47             else
48             {
49                 if(sx>b-1) sx=b-1; //改上限
50             }
51         }
52         else if(s=="<=")
53         {
54             cin>>b;
55             cin>>s;
56             if(s=="Y")
57             {
58                 if(sx>b) sx=b; //改上限
59             }
60             else
61             {
62                 if(xx<b+1) xx=b+1; //改下限
63             }
64         }
65     }
66     if(xx!=-21842&&xx<=sx) cout<<xx; //有解
67     else if(xx==-21842) cout<<"-2000000000"; //无下限
68     else cout<<"Impossible"; //无解
69     return 0;
70 }

猜你喜欢

转载自www.cnblogs.com/abs27/p/9188956.html