Submission
Status:
PPPPPPPPPP
Subtask/Task Score:
100/100
Score: 100
User: Kittiponn
Problemset: Dvaravati-LCS
Language: cpp
Time: 0.004 second
Submitted On: 2026-03-05 09:54:44
/* #include <bits/stdc++.h>
#define ll long long
#define sp << ' ' <<
#define nl << '\n'
#define cnl cout << '\n'
using namespace std;
const int nx = 1e5+5;
const int INF = 1e9+5;
const int MOD = 1e9+7;
int dp[605][605];
int main(){
cin.tie(0)->sync_with_stdio(0);
string a,b;
cin >> a >> b;
int sz = a.size();
for(int i = 1;i <= a.size();i++){
for(int j = 1;j <= b.size();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]);
cout << dp[i][j] << ' ';
}
cnl;
}
cout << dp[sz][sz] nl;
int i = a.size(),j = b.size();
string c;
while(i > 0 && j > 0){cout << i sp j nl;
if(a[i-1] == b[j-1])c += a[i-1],i--,j--;
else if(dp[i-1][j] <= dp[i][j-1])j--;
else i--;
}
reverse(c.begin(),c.end());
cout << c;
}
// 8 5 */
/* #include <bits/stdc++.h>
#define ll long long
#define sp << ' ' <<
#define nl << '\n'
using namespace std;
int dp[605][605];
int main()
{
cin.tie(0)->sync_with_stdio(0);
string a, b;
if (!(cin >> b >> a))
return 0;
int sz = a.size();
for (int i = 1; i <= sz; i++)
{
for (int j = 1; j <= sz; j++)
{
if (a[i - 1] == b[j - 1])
dp[i][j] = dp[i - 1][j - 1] + 1;
else
dp[i][j] = max(dp[i][j], dp[i][j - 1]);
dp[i][j] = max(dp[i - 1][j],dp[i][j]);
}
}
string c = "";
int i = sz, j = sz;
while (i > 0 && j > 0) {
if (a[i - 1] == b[j - 1]) {
c += a[i - 1];
i--; j--;
}
else if (dp[i-1][j] >= dp[i][j-1]) {
i--;
} else {
j--;
}
if(dp[i][j] == 0)break;
}
reverse(c.begin(), c.end());
cout << c nl;
cout << dp[sz][sz] nl;
if (dp[sz][sz] > (sz / 2.0))
{
cout << "y" nl;
}
else
{
cout << "n" nl;
}
return 0;
} */
#include <bits/stdc++.h>
using namespace std;
#define f first
#define s second
#define pii pair<ll,ll>
#define puii pair<ull,ull>
#define piii pair<ll,pii>
#define tiiii tuple<ll,ll,ll,ll>
#define ll long long
#define ull unsigned long long
#define mp make_pair
#define mt make_tuple
#define mpiiii(a,b,c) make_pair(a,make_pair(b,c));
// ll mod = 1000000007;
ll dp[610][610];
void solve(){
string s1,s2;
cin >> s2 >> s1;
dp[0][0] = 0;
dp[1][0] = 0;
dp[0][1] = 0;
for(int i = 1;i <= s1.length();i++){
for(int j = 1;j <= s2.length();j++){
dp[i][j] = 0;
if(s1[i-1] == s2[j-1]){
dp[i][j] = dp[i-1][j-1] + 1;
}
dp[i][j] = max(dp[i][j],dp[i][j-1]);
dp[i][j] = max(dp[i][j],dp[i-1][j]);
}
}
stack<char>st;
pii t;
int i,j;
i = s1.length();
j = s2.length();
while(i > 0 && j > 0){
if(s1[i-1] == s2[j-1]){
st.push(s1[i-1]);
i--;
j--;
}
else{
if(dp[i-1][j] >= dp[i][j-1]) i--;
else j--;
}
if(dp[i][j] == 0) break;
}
while(!st.empty()){
cout << st.top();
st.pop();
}
cout << '\n';
cout << dp[s1.length()][s2.length()];
cout << '\n';
if(dp[s1.length()][s2.length()] > s1.length()/2 || dp[s1.length()][s2.length()] > s1.length()/2){
cout << 'y';
}
else{
cout << 'n';
}
return;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
ll q;
// cin >> q;
// while(q--)
solve();
return 0;
}
/*
oagmmaopsgmorr
ymgaomaaoypnba
*/