Submission
Status:
PPPPPPPPPP
Subtask/Task Score:
100/100
Score: 100
User: august
Problemset: Dvaravati-LCS
Language: cpp
Time: 0.003 second
Submitted On: 2026-03-22 15:05:53
#include <bits/stdc++.h>
using namespace std;
int main() {
cin.tie(0)->sync_with_stdio(0);
string a, b;
cin>> a>> b;
int n=a.size(), m=b.size();
vector<vector<int>> dp(n+1, vector<int>(m+1, 0));
for (int i=1; i<=n; i++) {
for (int j=1; j<=m; j++) {
if (a[i-1] == b[j-1]) dp[i][j] = dp[i-1][j-1]+1;
else dp[i][j] = max(dp[i-1][j], dp[i][j-1]);
}
}
vector<char> ans;
int i=n, j=m;
while (i>=1 && j>=1) {
if (a[i-1] == b[j-1] && dp[i][j] == dp[i-1][j-1]+1) {
ans.push_back(a[i-1]);
i--;
j--;
}
else if (dp[i-1][j] > dp[i][j-1]) i--;
else j--;
}
for (int i=ans.size()-1; i>=0; i--) cout<< ans[i];
cout<< '\n';
cout<< dp[n][m]<< '\n';
if (dp[n][m] * 2 > max(n,m)) cout<< "y";
else cout<< 'n';
}