Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int main() {
- cin >> str >> n;
- rep(i,n)
- cin >> strs[i];
- len = sz(str);
- int ind = n;
- for (int i = len - 1; i >= 0; i--) {
- string temp = str.substr(i, 1);
- if (dp[i + 1])
- temp += str.substr(i + 1, min(9, dp[i + 1]));
- int mn = oo;
- rep(j,n) {
- int i1 = 0, i2 = 0;
- while (i1 < sz(temp) && i2 < sz(strs[j])) {
- if (temp[i1] != strs[j][i2])
- break;
- i1++;
- i2++;
- }
- if (i2 == sz(strs[j]))
- mn = min(mn, sz(strs[j]));
- }
- if (mn == oo)
- dp[i] = dp[i + 1] + 1;
- else
- dp[i] = mn - 1;
- if (dp[i] >= dp[ind])
- ind = i;
- }
- cout << dp[ind] << " " << ind << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement