Advertisement
Guest User

Untitled

a guest
Oct 17th, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.35 KB | None | 0 0
  1. #include<iostream>
  2. #include<string>
  3. #include<vector>
  4. #include<map>
  5. #include<set>
  6. #include<math.h>
  7. #include<algorithm>
  8. #include<time.h>
  9. #include<stdio.h>
  10. #include<stack>
  11. #include<queue>
  12. #include<deque>
  13. #include<fstream>
  14. #include<unordered_set>
  15. #include<unordered_map>
  16. #include<bitset>
  17. #include<cstdio>
  18.  
  19. using namespace std;
  20. struct vertex {
  21. int next[26];
  22. int dp;
  23. int leaf;
  24. };
  25.  
  26. vertex t[1000013];
  27. int sz;
  28.  
  29.  
  30. void add_string(const string & s)
  31. {
  32. int v = 0;
  33. for (size_t i = 0; i<s.length(); ++i) {
  34. char c = s[i] - 'a';
  35. if (t[v].next[c] == -1) {
  36. memset(t[sz].next, 255, sizeof t[sz].next);
  37. t[v].next[c] = sz++;
  38. }
  39. v = t[v].next[c];
  40. t[v].dp++;
  41. }
  42. t[v].leaf ++;
  43. }
  44. string s = "";
  45. string k_por(int k, int v)
  46. {
  47. for (int i = 0; i <= 25; i++)
  48. {
  49. if (t[v].next[i] != -1)
  50. {
  51. if (t[t[v].next[i]].dp < k)
  52. {
  53. k -= t[i].dp;
  54. }
  55. else
  56. {
  57. s += char(i + 'a');
  58. k_por(k, t[v].next[i]);
  59. }
  60. }
  61. }
  62. return s;
  63. }
  64. int main()
  65. {
  66. memset(t[0].next, 255, sizeof t[0].next);
  67. sz = 1;
  68. int n, k;
  69. cin >> n;
  70. string s;
  71. for (int i = 1; i <= n; i++)
  72. {
  73. cin >> s;
  74. if (s[0] >= 'a' && s[0] <= 'z')
  75. {
  76. add_string(s);
  77. }
  78. else
  79. {
  80. int k=0;
  81. for (int i = 0; i<s.size(); i++)
  82. {
  83. k *= 10;
  84. k += s[i] - '0';
  85. }
  86. cout << k_por(k, 0) << endl;
  87. s = "";
  88. }
  89.  
  90. }
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement