Advertisement
MinhNGUYEN2k4

Untitled

Dec 16th, 2020
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.52 KB | None | 0 0
  1. //Nguyen Huu Hoang Minh
  2. #include <bits/stdc++.h>
  3. #define sz(x) int(x.size())
  4. #define all(x) x.begin(),x.end()
  5. #define reset(x) memset(x, 0,sizeof(x))
  6. #define pb push_back
  7. #define mp make_pair
  8. #define fi first
  9. #define se second
  10. #define N 2005
  11. #define remain(x) if (x > MOD) x -= MOD
  12. #define ii pair<int, int>
  13. #define vi vector<int>
  14. #define vii vector< ii >
  15. #define bit(x, i) (((x) >> (i)) & 1)
  16. #define Task "test"
  17. #define int long long
  18.  
  19. using namespace std;
  20.  
  21. typedef long double ld;
  22.  
  23. char s[N];
  24. int n;
  25. int f[N][N];
  26.  
  27. void readfile()
  28. {
  29.     ios_base::sync_with_stdio(false);
  30.     cin.tie(0);cout.tie(0);
  31.     if (fopen(Task".inp","r"))
  32.     {
  33.         freopen(Task".inp","r",stdin);
  34.         //freopen(Task".out","w",stdout);
  35.     }
  36.     scanf("%s",s);
  37.     n = strlen(s);
  38. }
  39.  
  40. void proc()
  41. {
  42.     for(int len = 1; len <= n; len++)
  43.     {
  44.         for(int i=0; i<=n-len; i++)
  45.         {
  46.             int j = i+len-1;
  47.             if (len==1) f[i][j] = 1;
  48.             else f[i][j] = (s[i]==s[j]) ? f[i+1][j-1] + 2 : max(f[i][j-1], f[i+1][j]);
  49.         }
  50.     }
  51. }
  52.  
  53. void prin()
  54. {
  55.     char res[N]; memset(res, '\0', sizeof res);
  56.     int i=0, j=n-1, l=0;
  57.     while (i <= j)
  58.     {
  59.         if (f[i][j] == f[i+1][j]) ++i;
  60.         else if (f[i][j] == f[i][j-1]) j--;
  61.         else{
  62.             res[l++] = s[i];
  63.             i++, j--;
  64.         }
  65.     }
  66.     printf("%s",res);
  67.     if( f[0][n-1] % 2 ) res[--l] = 0;
  68.     reverse(res, res+l);
  69.     puts(res);
  70. }
  71.  
  72. signed main()
  73. {
  74.     readfile();
  75.     proc();
  76.     prin();
  77.     return 0;
  78. }
  79.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement