我之间做法:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
string s;
int main(){
int n;
int v,f;
char x;
int left[2]={-2147483647,1},right[2]={2147483647,1};
scanf("%d",&n);
cin>>x;
for(int i=0;i<n;i++){
cin>>s;
f=v=0;
if(s[1]=='>'){
if(s[2]=='='){
for(int i=3;i<s.size();i++)f|=(s[i]=='-'),v=(s[i]!='-')?v*10+s[i]-'0':v;
v=f?-v:v;
if(left[0]<v)left[0]=v,left[1]=0;
}else{
for(int i=2;i<s.size();i++)f|=(s[i]=='-'),v=(s[i]!='-')?v*10+s[i]-'0':v;
v=f?-v:v;
if(left[0]<v)left[0]=v,left[1]=1;
else if(left[0]==v)left[1]=1;
}
}else if(s[1]=='<'){
if(s[2]=='='){
for(int i=3;i<s.size();i++)f|=(s[i]=='-'),v=(s[i]!='-')?v*10+s[i]-'0':v;
v=f?-v:v;
if(right[0]>v)right[0]=v,right[1]=0;
}else{
for(int i=2;i<s.size();i++)f|=(s[i]=='-'),v=(s[i]!='-')?v*10+s[i]-'0':v;
v=f?-v:v;
if(right[0]>v)right[0]=v,right[1]=1;
else if(right[0]==v)right[1]=1;
}
}else if(s[1]=='='){
for(int i=2;i<s.size();i++)f|=(s[i]=='-'),v=(s[i]!='-')?v*10+s[i]-'0':v;
v=f?-v:v;
left[1]=right[1]=0;
left[0]=right[0]=v;
}
}
if(right[0]<left[0])puts("No Answer!");
else if(right[0]==left[0]&&((right[1]&&left[1])))puts("No Answer!");
else if(right[0]==left[0])cout<<x<<"="<<right[0]<<endl;
else if(right[0]==2147483647){
cout<<x<<">";
if(!left[1])cout<<"=";
cout<<left[0]<<endl;
}else if(left[0]==-2147483647){
cout<<x<<"<";
if(!right[1])cout<<"=";
cout<<right[0]<<endl;
}else{
cout<<left[0]<<"<";
if(!left[1])cout<<"=";
cout<<x<<"<";
if(!right[1])cout<<"=";
cout<<right[0]<<endl;
}
return 0;
}
明显对有x=a又x=b的数据过不了但AC了
代码应为
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
string s;
int left[2]={-2147483647,1},right[2]={2147483647,1};
int main(){
int n,v,f;
char x;
scanf("%d",&n);cin>>x;
for(int i=0;i<n;i++){
cin>>s;
f=v=0;
if(s[1]=='>'){
if(s[2]=='='){
for(int i=3;i<s.size();i++)f|=(s[i]=='-'),v=(s[i]!='-')?v*10+s[i]-'0':v;
v=f?-v:v;
if(left[0]<v)left[0]=v,left[1]=0;
}else{
for(int i=2;i<s.size();i++)f|=(s[i]=='-'),v=(s[i]!='-')?v*10+s[i]-'0':v;
v=f?-v:v;
if(left[0]<v)left[0]=v,left[1]=1;
else if(left[0]==v)left[1]=1;
}
}else if(s[1]=='<'){
if(s[2]=='='){
for(int i=3;i<s.size();i++)f|=(s[i]=='-'),v=(s[i]!='-')?v*10+s[i]-'0':v;
v=f?-v:v;
if(right[0]>v)right[0]=v,right[1]=0;
}else{
for(int i=2;i<s.size();i++)f|=(s[i]=='-'),v=(s[i]!='-')?v*10+s[i]-'0':v;
v=f?-v:v;
if(right[0]>v)right[0]=v,right[1]=1;
else if(right[0]==v)right[1]=1;
}
}else if(s[1]=='='){
for(int i=2;i<s.size();i++)f|=(s[i]=='-'),v=(s[i]!='-')?v*10+s[i]-'0':v;
v=f?-v:v;
if(right[0]>v)right[0]=v,right[1]=0;
if(left[0]<v)left[0]=v,left[1]=0;//改的地方
}
}
if(right[0]<left[0])puts("No Answer!");
else if(right[0]==left[0]&&((right[1]&&left[1])))puts("No Answer!");
else if(right[0]==left[0])cout<<x<<"="<<right[0]<<endl;
else if(right[0]==2147483647){
cout<<x<<">";
if(!left[1])cout<<"=";
cout<<left[0]<<endl;
}else if(left[0]==-2147483647){
cout<<x<<"<";
if(!right[1])cout<<"=";
cout<<right[0]<<endl;
}else{
cout<<left[0]<<"<";
if(!left[1])cout<<"=";
cout<<x<<"<";
if(!right[1])cout<<"=";
cout<<right[0]<<endl;
}
return 0;
}
这样才合理