Description
一个人猜数字 y y ,给出四种问题及其结果,即是否大于、小于、小于等于、大于等于 x x ,回答表示是, N N 表示不是,问是否有满足所有条件的
Input
第一行一整数 n n 表示问答次数,之后输入个问答 (1≤n≤104,−109≤x≤109) ( 1 ≤ n ≤ 10 4 , − 10 9 ≤ x ≤ 10 9 )
Output
如果存在满足条件的 y y 则输出任一解,否则输出
Sample Input
4
= 1 Y
3 N
= -3 N
55 N
Sample Output
17
Solution
简单题,根据限制求出 y y 的下限和上限,如果的取值范围非空则有解,否则无解
Code
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<set>
#include<ctime>
using namespace std;
typedef long long ll;
#define INF 0x3f3f3f3f
#define maxn 11
char a[maxn],b[maxn];
int n,c,Min,Max;
int main()
{
while(~scanf("%d",&n))
{
Min=-2000000000,Max=2000000000;
while(n--)
{
a[1]='#';
scanf("%s%d%s",a,&c,b);
if(b[0]=='N')
{
if(a[0]=='>'&&a[1]=='=')a[0]='<',a[1]='#';
else if(a[0]=='<'&&a[1]=='=')a[0]='>',a[1]='#';
else if(a[0]=='>'&&a[1]!='=')a[0]='<',a[1]='=';
else if(a[0]=='<'&&a[1]!='=')a[0]='>',a[1]='=';
}
// printf("%c%c\n",a[0],a[1]);
if(a[0]=='>')
{
if(a[1]=='=')Min=max(Min,c);
else Min=max(Min,c+1);
}
else
{
if(a[1]=='=')Max=min(Max,c);
else Max=min(Max,c-1);
}
}
if(Max>=Min)printf("%d\n",Min);
else printf("Impossible\n");
}
return 0;
}