Untitled

 avatar
unknown
c_cpp
3 months ago
1.1 kB
5
Indexable
#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
#define int long long
const int N = 1e6 + 10;
const int inf = 1e15;
const int mod = 998244353;

inline void solve(){
    
    string a, b;
    cin >> a >> b;

    int n = a.length();

    vector<vector<int>> pos(n + 1, vector<int>(26, n));

    for(int i = n - 1;i >= 0;i -= 1){
        pos[i] = pos[i + 1];
        pos[i][a[i] - 'a'] = i;
    }

    int ans = 0;

    for(int i = 0;i < n;i += 1){
        bool ok = 1;

        int p = i;

        for(auto &x : b){
            p = pos[p][x - 'a'];
            if(p >= n){
                ok = 0;
                break;
            }

            ok &= (p < n);

            p += 1;
        }

        if(ok){
            ans += p - i - 1;
        }
        else ans += n - i;
    }

    cout << ans;

}

int32_t main(){
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int t = 1;
    // cin >> t;
    while(t--){
        solve();
        cout << '\n';
    }
    return 0;
}
Editor is loading...
Leave a Comment