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