Ankit_132

C

Jun 12th, 2023
650
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.10 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define ll     long long
  5. #define _test   int _TEST; cin>>_TEST; while(_TEST--)
  6. #define ff     first
  7. #define ss     second
  8. #define pb     push_back
  9. #define ppb    pop_back
  10.  
  11. const int mxn = 200005;
  12. ll val[]={1,10,100,1000,10000};
  13. ll dp[mxn][7][2], n;
  14. string s;
  15.  
  16. ll solve(int in, int mx, int changed){
  17.     if(in==-1) return 0;
  18.     if(dp[in][mx][changed]!=-1) return dp[in][mx][changed];
  19.     int sign=1;
  20.     if(s[in]-'A'<mx) sign=-1;
  21.     ll res=sign*val[s[in]-'A']+solve(in-1,max(mx,int(s[in]-'A')),changed);
  22.     if(!changed){
  23.         for(int i=0; i<5; i++){
  24.             if(i!=s[in]-'A'){
  25.                 sign=1;
  26.                 if(i<mx) sign=-1;
  27.                 res=max(res,sign*val[i]+solve(in-1,max(mx,i),1));
  28.             }
  29.         }
  30.     }
  31.     return dp[in][mx][changed]=res;
  32. }
  33.  
  34. int main()
  35. {
  36.     ios_base::sync_with_stdio(false);
  37.     cin.tie(NULL);
  38.     cout.tie(NULL);
  39.  
  40.     _test
  41.     {
  42.         cin>>s;
  43.         n=s.size();
  44.         memset(dp, -1, sizeof(dp[0]) * (n+2));
  45.         ll ans=solve(n-1,0,0);
  46.         cout<<ans<<"\n";
  47.     }
  48. }
Advertisement
Add Comment
Please, Sign In to add comment