题目
#include<iostream>
#include<algorithm>
using namespace std;
struct node{
int l,r;
}a[1005],b[1005];
int cnt,cntb;
bool cmp(node n1,node n2){
return n1.l<n2.l;
}
int main(){
string s;
while(getline(cin,s)){
s+=" ";
int x=0,y=0,num=0;
int fst=1,flag=0;
for(int i=0;i<s.size();i++){
if(s[i]>='0'&&s[i]<='9'){
if(s[i-1]=='-'){
flag=1;
}
num=num*10+s[i]-'0';
if(!(s[i+1]>='0'&&s[i+1]<='9')){
if(flag)num=-num;
if(fst==1){
x=num;
}else if(fst==2){
y=num;
}
num=0;
fst++;
flag=0;
}
}
}
if(s.find("&&")!=-1){
if(x<=y){
a[++cnt].l=x;
a[cnt].r=y;
}
}else if(s.find(">=")!=-1){
a[++cnt].l=x;
a[cnt].r=32767;
}else if(s.find("<=")!=-1){
a[++cnt].l=-32768;
a[cnt].r=y;
}
}
if(cnt==0){
cout<<"false";
return 0;
}
sort(a+1,a+cnt+1,cmp);
int l=a[1].l,r=a[1].r;
for(int i=2;i<=cnt;i++){
if(a[i].l<=r+1){
r=max(r,a[i].r);
}else{
b[++cntb].l=l;
b[cntb].r=r;
l=a[i].l;
r=a[i].r;
}
}
b[++cntb].l=l;
b[cntb].r=r;
if(cntb==1&&b[1].l==-32768&&b[1].r==32767){
cout<<"true";
return 0;
}
for(int i=1;i<=cntb;i++){
if(b[i].l==-32768){
cout<<"x <= "<<b[i].r;
}
else if(b[i].r==32767){
cout<<"x >= "<<b[i].l;
}
else{
cout<<"x >= "<<b[i].l<<"&& x <= "<<b[i].r;
}
if(i==cntb){
}else{
cout<<"||"<<endl;
}
}
return 0;
}