40pts 求助
查看原帖
40pts 求助
453408
Yanzj楼主2021/11/12 13:56

源代码如下,那位大佬帮看一下

#include<bits/stdc++.h>
#define INF LONG_LONG_MAX
#define INFX LONG_LONG_MIN
#define ll long long
using namespace std;

string bl;
int n,cnt;
int max0,min0,opmax=0,opmin=0;
ll max1=INFX,max2=INFX;//>=,>
ll min1=INF,min2=INF;//<=,<

void js(){
        if(max1<=max2) {max0=max2;opmax=2;}
        else {max0=max1;opmax=1;}
        if(min1>=min2) {min0=min2;opmin=2;}
        else {min0=min1;opmin=1;}
        
        if((min1==INF&&min2==INF||n==1)&&(max1!=INFX||max2!=INFX)) {
        		cout<<bl<<">";
        		if(opmax==1) cout<<"=";
        		cout<<max0<<endl;
        		exit(0);
			}
		if((max1==INFX&&max2==INFX||n==1)&&(min1!=INF||min2!=INF)) {
        		cout<<bl<<"<";
        		if(opmin==1) cout<<"=";
        		cout<<min0<<endl;
        		exit(0);
		}
        
        if(min0<max0||((min0==max0)&&(opmax==2&&opmin==2))) cout<<"No Answer!\n";
        else if(min0==max0&&opmax==1&&opmin==1) cout<<bl<<"="<<max0<<endl;
        else if(min0>max0){
        	if(opmax==2&&opmin==2) cout<<max0<<"<"<<bl<<"<"<<min0<<endl;
        	if(opmax==1&&opmin==2) cout<<max0<<"<="<<bl<<"<"<<min0<<endl;
        	if(opmax==2&&opmin==1) cout<<max0<<"<"<<bl<<"<="<<min0<<endl;
        	if(opmax==1&&opmin==1) cout<<max0<<"<="<<bl<<"<="<<min0<<endl;
		}
		else return ; 
}

void in(){
	
    string s;
    
    getline(cin,s);
    
	int k=0;
    if(s[1]=='>'){
        ll sum=0;
        if(s[2]=='='){
        	k=3;
        	if(s[3]=='-') k=4;
            int ak=s.length()-1;
            if(cnt==n) ak++;
            for(;k<ak;k++){
                sum=sum*10+s[k]-'0';   
            }
            if(s[3]=='-') sum=-sum;
            max1=max(max1,sum);
        }
        
        else {
        	k=2;
        	if(s[2]=='-') k=3;
        	int ak=s.length()-1;
            if(cnt==n) ak++;
            for(k;k<ak;k++){
                sum=sum*10+s[k]-'0';
            }
            if(s[2]=='-') sum=-sum;
            max2=max(max2,sum);
        }
    }
    else{
        ll sum1=0;
        if(s[2]=='='){
        	k=3;
        	if(s[3]=='-') k=4;
        	int ak1=s.length()-1;
            if(cnt==n) ak1++;
            for(k;k<ak1;k++)
            sum1=sum1*10+s[k]-'0';
            if(s[3]=='-') sum1=-sum1;
            min1=min(min1,sum1);
            
        }
        else{
        	k=2;
        	if(s[2]=='-') k=3;
        	int ak1=s.length()-1;
            if(cnt==n) ak1++;
            for(k;k<ak1;k++)
            sum1=sum1*10+s[k]-'0';
            if(s[2]=='-') sum1=-sum1;
            min2=min(min2,sum1);
        }
    }
      //  }
    //cout<<min1<<" "<<min2<<" "<<max1<<" "<<max2<<endl;
} 

int main(){
    //scanf("%d%c\n",&n,&bl);
    cin>>n>>bl;
    string str;
    getline(cin,str);
    for(cnt=1;cnt<=n;cnt++)
        in();
    js();
    return 0;   
}
2021/11/12 13:56
加载中...