Problem: 2050D - Digital string maximization
Language: c++17 

Solution 1 (runtime: 62 ms):
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
#define in(a, b) for (ll i = (a); i <= (b); i++)                 // in using i
#define inj(a, b) for (ll j = (a); j <= (b); j++)                // in using j
#define ink(a, b) for (ll k = (a); k <= (b); k++)                // in using k
#define inl(a, b) for (ll l = (a); l <= (b); l++)                // in using l
#define inr(a, b) for (ll i = (a); i >= (b); i--)                // in reverse
#define inrj(a, b) for(ll j = (a); j >= (b); j--)                // in reverse
#define inrk(a, b) for(ll k = (a); k >= (b); k--)                // in reverse
#define inrl(a, b) for(ll l = (a); l >= (b); l--)                // in reverse
#define tt ll tcs; cin>>tcs; while(tcs--)                        // include test cases
#define ina(arr,n) ll arr[(n+1)]={0}; in(1,n) cin>>arr[i]        // input arr of n elements
#define inv(vec,n) vector<ll> vec(n+1); vec[0]=0; in(1,n) cin>>vec[i]; // input vector of n elements
#define pb push_back
#define lb lower_bound
#define ub upper_bound
#define pll pair <ll,ll>
#define vpll vector <pll>
#define sll set <ll>
#define spll set<pll>
#define qll queue<ll>
#define qpll queue<pll>
#define vll vector<ll>
#define mll map <ll,ll>
#define fi first
#define se second
#define vvll vector<vll>
#define vvpll vector<vpll>
#define endl    '\n'
#define all(x)  x.begin(), x.end()
const ll mod=1e9+7;
const ll INF=1e18;
const ll N=1e6;






// //pushes all primes till n in a vector
// void PrimeSieve(ll n,vll &prime){
//     ll CNT=0;
//     ll a[n+1];
//     in(1,n) a[i]=i;
//     in(2,n){
//         if(a[i]!=0){
//             CNT++;
//             prime.pb(i);
//             //cout<<i<<' ';
//             // cout<<i<<endl;
//             for(ll j=i;j<=n;j+=i){
//                 a[j]=0;
//             }
//         }
//     }
//     // cout<<CNT;
// }






// // returns a to power b mod m in log b time
// ll binexp(ll a, ll b,ll m) {
//     ll res = 1;
//     while (b > 0) {
//         if (b & 1)
//             res = (res * a)%m;
//         a = (a * a)%m;
//         b >>= 1;
//     }
//     return res;
// }






// // inserts lowest prime factor of i in a[i] till i=n in O(nlogn)
// void insertlp(vll &v,ll n){
//     v.assign(n+1,1);
//     in(2,n){
//         if(v[i]==1){
//             for(ll j=i;j<=n;j+=i){
//                 if(v[j]==1) v[j]=i;
//             }
//         }
//     }
// }






// // converts integer i to binary string of 'bits' bits
// string toBinary(ll i, ll bits)
// {
//     string s = "";
//     while (i > 0)
//     {
//         if (i%2)
//         {
//             s += '1';
//         }
//         else
//             s += '0';
//         i/=2;
//     }
//     // cout<<s.length()<<' '<<bits<<endl;
//     while (s.length() < bits)
//         s += '0';
//     reverse(s.begin(),s.end());
//     return s;
// }






// // converts binary string to decimal number
// ll toDecimal(string &n)
// {
//     ll s=n.length();
//     ll dec_value = 0;
 
//     // Initializing base value to 1, i.e 2^0
//     ll base = 1;
 
//     inr(s-1,0) if(n[i]=='1') dec_value+=pow(2,s-1-i); 
//     return dec_value;
// }






// ll gcd(ll a,ll b){
//     int x = min({a,b});  int y = max({a,b});
//     int modf = y%x;
//     if(modf==0)
//     {
//         return x;
//     }
//     else{
//         while(modf>0){
//             y=x;
//             x=modf;
//             modf = y%x;
//         }
//         return x;
//     }
// }






// ll lcm(ll a, ll b){
//     return ((a/gcd(a,b))*b);
// }






// void swap(ll &x, ll &y){
//     ll temp = x;
//     x = y;
//     y = temp;
// }





// ===================================================
// ||                //------------\                ||
// ||               //              \               ||
// ||              //   O        O   \              ||
// ||              \        !       //              ||
// ||               \              //               ||
// ||                \ ---------- //                ||
// ||                 L___________J                 ||
// ===================================================




// Jab bhi koi naya vector ya array banao toh uska size define karo.




void solve() {
    string s; cin>>s;
    if(s.size()!=1)
    {
        in(0, s.size()-2)
        {
            int l = i+1; int r = (9 - (s[i]-'0')) + i;      
            int c = s[i]-'0';           
            if(r>s.size()-1) r = s.size()-1;
            ll q = i;
            int maxx = 0;
            inj(l, r)
            {
                c++;
                if((s[j]-'0')>c) 
                {
                    ll a = maxx;
                    maxx = max(maxx, (s[j]-'0')-c);
                    if(a!=maxx) q = j;
                }
            }
            int a = (s[q]-'0')-(q-i);
            reverse(s.begin()+i, s.begin()+q+1);
            if(q>=(i+1)) reverse(s.begin()+i+1, s.begin()+q+1);
            s[i] = s[i] + (a) - (s[i]-'0');
        }
    }
    cout<<s<<endl;
}


int main() {
    cin.tie(nullptr)->sync_with_stdio(false);

    tt{
        solve();
    }

    // solve();
}

Solution 2 (runtime: 61 ms):
#include <iostream>

#include <algorithm>

#include <cmath>

#include <vector>

#include <map>

#include <set>

#include <stack>

#include <string>

#include <queue>

#include <numeric>

#include <bitset>

#include <stdio.h>

#include <time.h>

#include <assert.h>

#include <unordered_map>

#include <climits>



using namespace std;



int main (){

ios_base::sync_with_stdio(0);

cin.tie(0);

cout.tie(0);



int t;

cin >> t;

while (t--) {

string s;

cin >> s;

for (int i = 0; i < s.size() - 1; i++) {

int mx = 0, k = 0, t;

t = min(i + 9 - (s[i] - '0'), (int)s.size() - 1);

for (int j = i + 1; j <= t; j++) {

if (s[j] - '0' - (s[i] - '0') - (j - i) > mx) {

mx = s[j] - '0' - (s[i] - '0') - (j - i);

k = j;

}

}

if (mx > 0) {

for (int j = k; j >= i+1; j--) {

s[j] = s[j-1];

}

s[i] += mx;

}

}

for (int i = 0; i < s.size(); i++) {

cout << s[i];

}

cout << "\n";

}

}