Advertisement
Manh_LK

Giải mật thư

Mar 30th, 2020
1,040
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.02 KB | None | 0 0
  1. #include<iostream>
  2. #include<string>
  3. using namespace std;
  4. string S[501];
  5. void SapXepChu(int ttString, int l, int r)
  6. {
  7.     int pivot = (int)S[ttString][(l + r) / 2];
  8.     int i = l;
  9.     int j = r;
  10.     while (i <= j)
  11.     {
  12.         while ((int)S[ttString][i] < pivot) i++;
  13.         while ((int)S[ttString][j] > pivot) j--;
  14.         if (i <= j)
  15.         {
  16.             char tmpt = S[ttString][i];
  17.             S[ttString][i] = S[ttString][j];
  18.             S[ttString][j] = tmpt;
  19.             i++; j--;
  20.         }
  21.     }
  22.     if (l < j) SapXepChu(ttString, l, j);
  23.     if (r > i) SapXepChu(ttString, i, r);
  24. }
  25. int main()
  26. {
  27.     //freopen("input.txt", "r", stdin);
  28.     long m, n, k, x;
  29.     cin >> n >> m >> k >> x;
  30.     string str;
  31.     getline(cin, str);
  32.     getline(cin, str);
  33.     for (int i = 0; i < m; i++)
  34.     {
  35.         getline(cin, S[i]);
  36.         SapXepChu(i, 0, k - 1);
  37.     }
  38.     int tt = m - 1;
  39.     for (int i = n - 1; i >= 0; i--)
  40.     {
  41.         if (str[i] == '#')
  42.         {
  43.             if (x % k == 0)
  44.             {
  45.                 str[i] = S[tt][k - 1];
  46.                 x /= k;
  47.             }
  48.             else
  49.             {
  50.                 str[i] = S[tt][(x % k) - 1];
  51.                 x = (x / k) + 1;
  52.             }
  53.             tt--;
  54.         }
  55.     }
  56.     cout << str;
  57.     return 0;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement