Problem:
Score : 100 points

Problem Statement

You are given strings s and t.
Find one longest string that is a subsequence of both s and t.

Notes

A subsequence of a string x is the string obtained by removing zero or more characters from x and concatenating the remaining characters without changing the order.

Constraints

s and t are strings consisting of lowercase English letters.

1 \leq |s|, |t| \leq 3000

Input

Input is given from Standard Input in the following format:

s
t

Output

Print one longest string that is a subsequence of both s and t.
If there are multiple such strings, any of them will be accepted.

Sample Input 1

axyb
abyxb

Sample Output 1

axb

The answer is axb or ayb; either will be accepted.

Sample Input 2

aa
xayaz

Sample Output 2

aa

Sample Input 3

a
z

Sample Output 3

The answer is (an empty string).

Sample Input 4

abracadabra
avadakedavra

Sample Output 4

aaadara

Solution in JavaScript (node.js v5.12) (judge verdict: Wrong Answer)



function Main(input) {
  input = input.split("\n");
  var s = input[0].split("");
  var t = input[1].split("");
  var dp =new Array(s.length+1);
  for(var i=0;i<s.length+1;i++){
    var tmp=new Array(t.length+1).fill(0);
    dp[i]=tmp;
  }
  for(var i=0;i<s.length;i++){
    for(var j=0;j<t.length;j++){
      if(s[i]==t[j]){
        dp[i+1][j+1]=Math.max(dp[i][j]+1,dp[i+1][j+1]);
      }
      dp[i+1][j+1]=Math.max(dp[i+1][j],dp[i+1][j+1]);
      dp[i+1][j+1]=Math.max(dp[i][j+1],dp[i+1][j+1]); 
    }
  }
  var i=s.length;
  var j=t.length;
  var ans="";
  while(i>0&&j>0){
    if(dp[i][j]==dp[i-1][j]){
      i--;
    }else if(dp[i][j]==dp[i][j-1]){
      j--;
    }else{
      ans=s[i-1]+ans;
      i--;
    }
  }


  console.log('%s', ans);
  return ans;
}
// "実行する"ボタンを押した時に実行される関数 (デバッグ用)
function debug(n){
  var input = document.getElementById("input"+n).value;
  var ans=Main(input);
  var result="WA";
  if(ans==document.getElementById("output"+n).value.split("\n")[0]){
    result="AC";
  }
  document.getElementById("result"+n).innerHTML=result;
}
Main(require("fs").readFileSync("/dev/stdin", "utf8"));