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;
    vector<vector<int>> arr(10);
    for(int i=s.size()-1;i>=0;i--){
        arr[s[i]-'0'].push_back(i);
    }
    sort(s.begin(),s.end(),greater<char>());
    for(auto &i:s){
        i-=arr[i-'0'].back();
        arr[i-'0'].pop_back();
    }
    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: 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;
}