Submission
Status:
PP-P---P--
Score: 40
User: AungS8430
Problemset: Dvaravati-LCS
Language: cpp
Time: 0.003 second
Submitted On: 2025-03-18 08:26:18
#include <bits/stdc++.h>
using namespace std;
int main(void) {
string a, b;
cin >> a >> b;
vector<vector<int>> lcs(a.length() + 1, vector<int> (b.length() + 1, 0));
for (int i = 1; i <= a.length(); i++) {
for (int j = 1; j <= b.length(); j++) {
if (a[i - 1] == b[j - 1]) lcs[i][j] = lcs[i - 1][j - 1] + 1;
else lcs[i][j] = max(lcs[i - 1][j], lcs[i][j - 1]);
}
}
pair<int, int> curr = {a.length(), b.length()};
string result = "";
while (curr.first > 0 && curr.second > 0) {
if (lcs[curr.first][curr.second] == max(lcs[curr.first - 1][curr.second], lcs[curr.first][curr.second - 1])) {
if (lcs[curr.first - 1][curr.second] > lcs[curr.first][curr.second - 1]) curr.first--;
else curr.second--;
} else {
result += a[curr.first - 1];
curr.first--;
curr.second--;
}
}
reverse(result.begin(), result.end());
cout << result << endl << lcs[a.length()][b.length()] << endl << (lcs[a.length()][b.length()] > (a.length() + 1) / 2 ? "y" : "n");
return 0;
}