Language: C++

#define _CRT_SECURE_NO_WARNINGS
#include "bits/stdc++.h"

#define PB push_back
#define PF push_front
#define LB lower_bound
#define UB upper_bound
#define fr(x) freopen(x,"r",stdin)
#define fw(x) freopen(x,"w",stdout)
#define iout(x) printf("%d\n",x)
#define lout(x) printf("%lld\n",x)
#define REP(x,l,u) for(ll x = l;x<u;x++)
#define RREP(x,l,u) for(ll x = l;x>=u;x--)
#define complete_unique(a) a.erase(unique(a.begin(),a.end()),a.end())
#define mst(x,a) memset(x,a,sizeof(x))
#define all(a) a.begin(),a.end()
#define PII pair<int,int>
#define PLL pair<ll,ll>
#define MP make_pair
#define sqr(x) ((x)*(x))
#define lowbit(x) ((x)&(-(x)))
#define lson (ind<<1)
#define rson (ind<<1|1)
#define se second
#define fi first
#define sz(x) ((int)x.size())
#define EX0 exit(0);

typedef  long long ll;
typedef unsigned long long ull;
typedef double db;
typedef long double ld;
using namespace std;
typedef vector<ll> VLL;
typedef vector<int> VI;
const int block_size = 320;
typedef complex<ll> point;
const ll mod = 1e9 + 7;
const ll inf = 1e9 + 7;
const ld eps = 1e-9;
const db PI = atan(1) * 4;

template<typename T, typename S>inline bool upmin(T&a, const S&b) { return a > b ? a = b, 1 : 0; }
template<typename T, typename S>inline bool upmax(T&a, const S&b) { return a < b ? a = b, 1 : 0; }

ll gcd(ll a, ll b) { return b == 0 ? a : gcd(b, a%b); }
namespace SOLVE {
    vector<vector<int>> memo;
    string a, b;
    
    int lcs(int alength, int blength) {
        if (alength == 0 || blength == 0) {
            return 0;
        }
        
        if (memo[alength][blength] != -1) {
            return memo[alength][blength];
        }
        
        int ans;
        if (a[alength - 1] == b[blength - 1]) {
            ans = lcs(alength - 1, blength - 1) + 1;
        }
        else {
            int ans1 = lcs(alength - 1, blength);
            int ans2 = lcs(alength, blength - 1);
            ans = max(ans1, ans2);
        }
        memo[alength][blength] = ans;
        // cout << a << ' ' << b << ' ' << ans << endl;
        return ans;
    }
    void main() {
        cin >> a >> b;
        int na = a.length(), nb = b.length();
        memo.resize(na + 5, vector<int>(nb + 5，-1));
        int iptr = na, jptr = nb, current, top, left;
        stack<char> ans;
        
        lcs(na, nb);
        while (iptr != 0 && jptr != 0) {
            // cout << iptr << ' ' << jptr << endl;
            current = memo[iptr][jptr];
            top = memo[iptr - 1][jptr];
            left = memo[iptr][jptr - 1];
            
            if (current == left) {
                jptr--;
            }
            else if (current == top) {
                iptr--;
            }
            else {
                ans.push(a[iptr - 1]);
                iptr--;
                jptr--;
            }
        }
        
        while (sz(ans)) {
            cout << ans.top();
            ans.pop();
        }
    }
}

signed main() {
    
    int t;
    //    in(t);
    t = 1;
    while (t--) {
        SOLVE::main();
        
    }
    
    return 0;
}


Compiler output:
a.cc: In function 'void SOLVE::main()':
a.cc:76:46: error: unable to find numeric literal operator 'operator""\U0000ff0c'
   76 |         memo.resize(na + 5, vector<int>(nb + 5，-1));
      |                                              ^~~