Advertisement
Guest User

Untitled

a guest
Nov 24th, 2015
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.16 KB | None | 0 0
  1. void SolveC()
  2. {
  3.     size_t t;
  4.     cin >> t;
  5.     for (size_t i = 0; i < t; ++i)
  6.     {
  7.         int cnt[26] = { 0 };
  8.         string s;
  9.         cin >> s;
  10.  
  11.         for (size_t j = 0; j < s.length(); ++j)
  12.             if (s[j] >= 'a' && s[j] <= 'z')
  13.                 ++cnt[s[j] - 'a'];
  14.         size_t n1 = 0;
  15.         size_t nLong = 0;
  16.  
  17.         string alphabet = "abcdefghijklmnopqrstuvwxyz";
  18.         int x = 0;
  19.         for (size_t j = 0; j < 26; ++j)
  20.         {
  21.             x ^= cnt[j];
  22.             if (cnt[j] == 1)
  23.                 ++n1;
  24.             if (cnt[j] > 1)
  25.                 ++nLong;
  26.         }
  27.  
  28.         if (nLong == 0)
  29.         {
  30.             if (n1 % 2)
  31.             {
  32.                 cout << 2;
  33.             }
  34.             else
  35.             {
  36.                 size_t j = 0;
  37.                 while (cnt[j] == 0) ++j;
  38.                 cout << "1 " << alphabet[j];
  39.             }
  40.         }
  41.         else if (nLong == 1)
  42.         {
  43.             cout << "1 ";
  44.             size_t j = 0;
  45.             while (cnt[j] <= 1) ++j;
  46.             for (size_t k = 1; k < cnt[j]; ++k)
  47.                 cout << alphabet[j];
  48.             if (n1 % 2)
  49.                 cout << alphabet[j];
  50.         }
  51.         else
  52.         {
  53.             if (x == 0)
  54.             {
  55.                 cout << 2;
  56.             }
  57.             else
  58.             {
  59.                 cout << "1 ";
  60.                 for (size_t j = 0; j < 26; ++j)
  61.                 {
  62.                     if (cnt[j] >= cnt[j] ^ x)
  63.                     {
  64.                         for (int k = cnt[j] ^ x; k < cnt[j]; ++k)
  65.                         {
  66.                             cout << alphabet[j];
  67.                         }
  68.                         break;
  69.                     }
  70.                 }
  71.             }
  72.         }
  73.  
  74.         cout << "\n";
  75.     }
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement