Submission
Status:
PPPPPPPPPP
Subtask/Task Score:
100/100
Score: 100
User: SayRo
Problemset: Dvaravati-LCS
Language: cpp
Time: 0.004 second
Submitted On: 2026-09-30 16:02:40
#include<bits/stdc++.h>
using namespace std;
vector<vector<int>> dp(601,vector<int>(601,0));
int main(){
cin.tie(nullptr)->sync_with_stdio(0);
string a,b,ans="";
cin>>a>>b;
int x=a.size(),y=b.size();
for(int i=1;i<=x;i++){
for(int j=1;j<=y;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-1],dp[i-1][j]);
}
}
int i=x,j=y;
while(i!=0&&j!=0){
if(a[i-1]==b[j-1]){
ans+=a[i-1];
i--,j--;
}else if(dp[i-1][j]>dp[i][j-1]) i--;
else j--;
}
reverse(ans.begin(),ans.end());
cout<<ans<<endl<<dp[x][y]<<endl<<(dp[x][y]>=max(x,y)/2?"y":"n");
}