1 solutions

  • 1
    @ 2025-1-19 12:09:24

    x有可能是基数,也有可能是偶数;

    传统输入:
    //输入分为基数a[]和偶数s[]
    for(int i=1;i<=n/2;i++){
    		cin>>a[i]>>s[i];
    }
    
    代码主体:
    if(n%2!=0){//判断输入个数是不是偶数
    		cin>>a[n/2+1];//是,就要多输入一个基数
    		sort(a+1,a+1+n/2+1);
    		sort(s+1,s+1+n/2,cmp);//比大小
    		for(int i=1;i<=n/2;i++){
    			cout<<a[i]<<' '<<s[i]<<' ';
    		}		
    		cout<<a[n/2+1];
    }
    

    分支:

    //不是,就不用多输入
       	sort(a+1,a+1+n/2);
       	sort(s+1,s+1+n/2,cmp);
       	for(int i=1;i<=n/2;i++){
       		cout<<a[i]<<' '<<s[i]<<' ';
       	}
    }
    

    完整代码:

    #include<bits/stdc++.h>
    typedef long long ll;
    using namespace std;
    const int N=10010;
    int a[N];
    int s[N];
    int n;
    bool cmp(int a,int s){
    	return a>s;
    }
    int main(){
    
    	cin.sync_with_stdio(false);
    	ios::sync_with_stdio(0);
    	cin.tie(0),cout.tie(0);
    	cin>>n;
    	for(int i=1;i<=n/2;i++){
    		cin>>a[i]>>s[i];
    	}
    	if(n%2!=0){
    		cin>>a[n/2+1];
    		sort(a+1,a+1+n/2+1);
    		sort(s+1,s+1+n/2,cmp);
    		for(int i=1;i<=n/2;i++){
    			cout<<a[i]<<' '<<s[i]<<' ';
    		}		
    		cout<<a[n/2+1];
    	}
    	else{
    		sort(a+1,a+1+n/2);
    		sort(s+1,s+1+n/2,cmp);
    			for(int i=1;i<=n/2;i++){
    			cout<<a[i]<<' '<<s[i]<<' ';
    		}
    	}
    	
    	return 0;
    }
    
    • 1

    Information

    ID
    733
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    8
    Tags
    (None)
    # Submissions
    74
    Accepted
    14
    Uploaded By