稳定wa一个求调整
查看原帖
稳定wa一个求调整
1359986
for_tangxin楼主2024/8/17 00:15
#include <bits/stdc++.h>
using namespace std;

int n , b[25] ;
long long a[25] , k ;

int check_maxn(long long chall, long long mast){
    string c = to_string(a[chall]) , m = to_string(a[mast]) ;
    int al = c.size() , bl = m.size() ;
    if(al==bl) for(int z=0 ; z<al ; z++) {
        if(c[z] > m[z])return 1 ;
        else if(c[z] < m[z]) return 0 ;
    }
    else if(al > bl)
    {
        for(int z=0 ; z<bl ; z++) {
            if(c[z] > m[z])return 1 ;
            else if(c[z] < m[z])return 0 ;
        }
        for(int z=1 ; z<=n ; z++){ 
            if(!b[z] and z!=chall and z!=mast){
                string l = to_string(a[z]) ;
                for(int w=bl ; w<al ; w++) {
                    if(l[z-bl] > c[z])return 0 ;
                    else if (l[z-bl] < c[z]) return 1 ;
                }
            }
        }
        return 1 ;
    }
    else if(al<bl) {
        for(int z=0 ; z<al ; z++) {
            if(c[z] > m[z])return 1 ;
            else if(c[z] < m[z]) return 0 ;
        }
        for(int z=1 ; z<=n ; z++){ 
            if(!b[z] and z!=chall and z!=mast){
                string l = to_string(a[z]) ;
                for(int w=al ; w<bl ; w++) {
                    if(l[z-bl] > m[z])return 1 ;
                    else if(l[z-bl] < m[z]) continue ;
                }
            }
        }
        return 0 ;
    }
    return 0 ;
}

int main()
{
    cin >> n ;
    for(int i=1 ; i<=n ; i++) cin >> a[i] ;
    int nu = n ;
    while(nu>0) {
        for(int i=1 ; i<=n ; i++) {
            if(b[i]==0){
                k = i ;
                break ;
            }
        }
        for(int j=1 ; j<=n ; j++){
            if(b[j] or j==k) continue ;
            if(check_maxn(j,k)) k = j ;
        }
        nu-- ;
        cout << a[k] ;
        b[k] = 1 ;
    }
	return 0;
}
2024/8/17 00:15
加载中...