Problem: 2050D - Digital string maximization
Language: C++23 (GCC 14-64, msys2)

Previous submission (verdict: Wrong answer on test 1):
#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
using namespace __gnu_pbds;
using namespace std;
typedef tree<int,null_type,less_equal<int>,rb_tree_tag,tree_order_statistics_node_update> indexed_multiset;
const long long int mod=1e9+7;
const long long int mod2=998244353;
#define ll long long int
#define str string
#define vll __int128
#define nl "\n" 
#define pii pair<int,int>
#define vi vector<int>
// long long exp(long long a, long long b){
//     if(b==0) return 1;
//     if(b==1) return a;
//     long long temp=exp(a,b/2)%mod;
//     long long result=(1LL*temp*temp)%mod;
//     if(b%2==1) result=(result*a)%mod;
//     return result;
// }
// vector<bool> notprime(2e6+5);
// vector<int> primes;
// void sieve(){
//     for(int i=2;i*i<2e6+5;i++){
//         if(!notprime[i]){
//             for(int j=i*i;j<2e6+5;j+=i){
//                 notprime[j]=true;
//             }
//         }
//     }
// }
// bool cmp(pair<int,int> &a,pair<int,int> &b){
//     if(a.second==b.second){
//         return a.first>b.first;
//     }
//     return a.second<b.second;
// }
// ll inv(ll a, ll p){
//     return exp(a, p-2);
// }
// ll nCk(ll n, ll k, ll p){
//     return ((fact[n] * inv(fact[k], p) % p) * inv(fact[n-k], p)) % p;
// }
// ll lcm(ll a,ll b){
//     return 1LL*a*b/__gcd(a,b);
// }
void solve(){
    str s;
    cin>>s;
    for(int i=0;i<s.size();i++){
        int ind=0;
        for(int j=0;j<10 && (i+j)<s.size();j++){
            if((s[i+j]-j) > (s[i+ind]-ind)){
                ind=j;
            }
        }
        swap(s[i+ind],s[i]);
        s[i]=s[i]-ind;
    }
    cout<<s<<nl;

}
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int t=1,tt=1;
    cin>>t;
    while(t--){
        // cout<<"Case #"<<tt++<<": ";
        solve();
        
    }    
    return 0;
}

Submission (verdict: Accepted):
#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
using namespace __gnu_pbds;
using namespace std;
typedef tree<int,null_type,less_equal<int>,rb_tree_tag,tree_order_statistics_node_update> indexed_multiset;
const long long int mod=1e9+7;
const long long int mod2=998244353;
#define ll long long int
#define str string
#define vll __int128
#define nl "\n" 
#define pii pair<int,int>
#define vi vector<int>
// long long exp(long long a, long long b){
//     if(b==0) return 1;
//     if(b==1) return a;
//     long long temp=exp(a,b/2)%mod;
//     long long result=(1LL*temp*temp)%mod;
//     if(b%2==1) result=(result*a)%mod;
//     return result;
// }
// vector<bool> notprime(2e6+5);
// vector<int> primes;
// void sieve(){
//     for(int i=2;i*i<2e6+5;i++){
//         if(!notprime[i]){
//             for(int j=i*i;j<2e6+5;j+=i){
//                 notprime[j]=true;
//             }
//         }
//     }
// }
// bool cmp(pair<int,int> &a,pair<int,int> &b){
//     if(a.second==b.second){
//         return a.first>b.first;
//     }
//     return a.second<b.second;
// }
// ll inv(ll a, ll p){
//     return exp(a, p-2);
// }
// ll nCk(ll n, ll k, ll p){
//     return ((fact[n] * inv(fact[k], p) % p) * inv(fact[n-k], p)) % p;
// }
// ll lcm(ll a,ll b){
//     return 1LL*a*b/__gcd(a,b);
// }
void solve(){
    str s;
    cin>>s;
    for(int i=0;i<s.size();i++){
        int ind=0;
        for(int j=0;j<10 && (i+j)<s.size();j++){
            if((s[i+j]-j) >(s[i+ind]-ind)){
                ind=j;
            }
            else if((s[i+j]-j) ==(s[i+ind]-ind))ind=min(ind,j);
        }
        // s[i+ind]=char(s[i+ind]-ind);
        for(int j=1;j<=ind;j++){
            swap(s[i+ind-j],s[i+ind-j+1]);
        }
        s[i]-=ind;
    }
    cout<<s<<nl;

}
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int t=1,tt=1;
    cin>>t;
    while(t--){
        // cout<<"Case #"<<tt++<<": ";
        solve();
        
    }    
    return 0;
}