望加强数据
查看原帖
望加强数据
535259
Perfound楼主2021/11/2 20:54

我之间做法:

#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;
}

这样才合理

2021/11/2 20:54
加载中...