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");
}