Advertisement
sherry_ahmos

Untitled

Jan 30th, 2023
915
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.29 KB | None | 0 0
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <vector>
  4. #include <string>
  5. #include <queue>
  6. #include <map>
  7. #include <set>
  8. #include <string>
  9. #include <algorithm>
  10. #include <cmath>
  11. #include <unordered_map>
  12.  
  13. using namespace std;
  14. #define ll long long
  15. #define nl endl
  16. #define cy cout << "Yes\n"
  17. #define cn cout << "No\n"
  18. #define sz s.size()
  19.  
  20. void sherry()
  21. {
  22.     ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
  23. #ifndef ONLINE_JUDGE
  24.     freopen("input.txt", "r", stdin), freopen("output.txt", "w", stdout);
  25. #endif
  26. }
  27. /*
  28. ll gcd(ll a, ll b)
  29. {
  30.     while (b)
  31.     {
  32.         a %= b;
  33.         swap(a, b);
  34.         c++;
  35.     }
  36.     return a;
  37. }
  38. ll lcm(ll a, ll b)
  39. {
  40.     return a * b / gcd(a, b);
  41. }*/
  42.  
  43. bool is_prime(ll x)
  44. {
  45.     if (x == 2 || x == 3 || x == 1)
  46.         return true;
  47.     if (x % 2 == 0)
  48.         return false;
  49.     for (ll i = 3; i <= sqrt(x); i += 2)
  50.     {
  51.         if (x % i == 0)
  52.             return false;
  53.     }
  54.     return true;
  55. }
  56. /*
  57. int s[1000001];
  58. int divisors(int n)
  59. {
  60.     ll c = 0;
  61.     if (s[n] != 0)
  62.         return s[n];
  63.     for (int i = 1; i * i <= n; i++)
  64.     {
  65.         if (n % i == 0)
  66.         {
  67.             c++;
  68.             if (i * i != n)
  69.                 c++;
  70.         }
  71.     }
  72.     s[n] = c;
  73.     return c;
  74. }*/
  75. /*
  76. bool comp(const pair<string, long double> &a, const pair<string, long double> &b)
  77. {
  78.     if (a.second == b.second)
  79.     {
  80.         return a.first < b.first;
  81.     }
  82.     return a.second > b.second;
  83. }*/
  84. string s[100];
  85. int main()
  86. {
  87.     sherry();
  88.     set<string> dict;
  89.     int n, m, i;
  90.     cin >> n >> m;
  91.     for (i = 0; i < n; i++)
  92.     {
  93.         cin >> s[i];
  94.         dict.insert(s[i]);
  95.     }
  96.     vector<string> left, right;
  97.     string mid;
  98.     for (i = 0; i < n; i++)
  99.     {
  100.         string t = s[i];
  101.         reverse(t.begin(), t.end());
  102.         if (t == s[i])
  103.             mid = t;
  104.         else if (dict.find(t) != dict.end())
  105.         {
  106.             left.push_back(s[i]);
  107.             right.push_back(t);
  108.             dict.erase(s[i]);
  109.             dict.erase(t);
  110.         }
  111.     }
  112.     cout << left.size() * m * 2 + mid.size() << endl;
  113.     for (string x : left)
  114.         cout << x;
  115.     cout << mid;
  116.     reverse(right.begin(), right.end());
  117.     for (string x : right)
  118.         cout << x;
  119.     cout << endl;
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement