Submission

Status:

PPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: faofao

Problemset: Dvaravati-LCS

Language: cpp

Time: 0.003 second

Submitted On: 2026-03-15 20:47:22

#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int mxN = 606 ;
ll dp[mxN][mxN] ;

int main(){
    ios::sync_with_stdio(0),cin.tie(0) ;
    string s1,s2 ; cin >> s1 >> s2 ;
    int n = s1.length() ;
    vector<char> v1(n+1,0) ;
    vector<char> v2(n+1,0) ;
    for(int i=1 ; i<=n ; i++){
        v1[i] = s1[i-1] ;
        v2[i] = s2[i-1] ;
    }

    for(int i=1 ; i<=n ; i++){
        for(int j=1 ; j<=n ; j++){
            if(v1[i] == v2[j]) dp[i][j] = dp[i-1][j-1] +1;
            else dp[i][j] = max(dp[i][j-1] , dp[i-1][j]) ;
        }
    }
    
    int i=n ,j=n;
    vector<char> ans ;
    while(i>0 && j>0){
        if(v1[i] == v2[j]){
            ans.push_back(v1[i]) ;
            i--;
            j--;
        }
        else if(dp[i-1][j] > dp[i][j-1]) i--;
        else j-- ;
    }
    reverse(ans.begin(),ans.end()) ;
    for(auto kv : ans) cout << kv ;
    cout << "\n" ;
    cout <<dp[n][n]<<"\n" ;
    if(ans.size()>n/2) cout << "y" ;
    else cout << "n" ;
}