fork download
  1.  
  2. #include <bits/stdc++.h>
  3. #define FOR(i, a, b) for(int i = (a); i <= (b); i++)
  4.  
  5. using namespace std;
  6. string a, b;
  7. int n, m;
  8.  
  9. void Solve(){
  10. vector<vector<int> > F(n+1, vector<int>(m+1, 0));
  11. string res = "";
  12. FOR(i, 1, n)
  13. FOR(j, 1, m)
  14. if (a[i] == b[j]) F[i][j] = F[i-1][j-1] + 1;
  15. else F[i][j] = max(F[i-1][j], F[i][j-1]);
  16.  
  17. while(F[n][m] > 0){
  18. if (a[n] == b[m]){
  19. res = a[n] + res;
  20. n--;
  21. m--;
  22. } else if (F[n][m] == F[n-1][m]) n--;
  23. else if (F[n][m] == F[n][m-1]) m--;
  24. }
  25. cout<<res;
  26. }
  27.  
  28. signed main()
  29. {
  30. ios_base::sync_with_stdio(false);
  31. cin.tie(NULL); cout.tie(NULL);
  32.  
  33. cin >> a;
  34. cin >> b;
  35. n = (int)a.size();
  36. m = (int)b.size();
  37. a = "*" + a;
  38. b = "*" + b;
  39. Solve();
  40. return 0;
  41. }
  42.  
  43.  
Success #stdin #stdout 0.01s 5308KB
stdin
Standard input is empty
stdout
Standard output is empty