题意
有一个未知的数,给出一些大小判断语句包括是否大于、小于、大于等于、小于等于某数,让你猜这个数可能是多少,如果有多个解输出任意一个,如果无解,输出”Impossible”
思路
首先把这个数可能的上下界设为无穷,然后根据大小判断语句更新上下界,如果上界小于下界了,就肯定无解了,否则到最后输出这个上下界范围内任意一个数就行了
代码
#include <cstdio>
char op[3],judge[2];
int main()
{
int n,max=1000000001,min=-1000000001,x;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%s%d%s",op,&x,judge);
if(judge[0]=='Y')
{
if(op[0]=='>'&&op[1]=='\0'&&min<x+1)
min=x+1;
if(op[0]=='>'&&op[1]=='='&&min<x)
min=x;
if(op[0]=='<'&&op[1]=='\0'&&max>x-1)
max=x-1;
if(op[0]=='<'&&op[1]=='='&&max>x)
max=x;
}
if(judge[0]=='N')
{
if(op[0]=='>'&&op[1]=='\0'&&max>x)
max=x;
if(op[0]=='>'&&op[1]=='='&&max>x-1)
max=x-1;
if(op[0]=='<'&&op[1]=='\0'&&min<x)
min=x;
if(op[0]=='<'&&op[1]=='='&&min<x+1)
min=x+1;
}
}
if(min<=max)
printf("%d\n",(min+max)/2);
else printf("Impossible\n");
return 0;
}