fork(2) download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. int order[200000];
  6. int t, n;
  7. string alphabet;
  8. string words[200000];
  9.  
  10. bool compare(string a, string b)
  11. {
  12. int i = 0;
  13.  
  14. while(i < a.length() && i < b.length()) {
  15.  
  16. if(a[i] == b[i]) {
  17. i++;
  18. }
  19. else {
  20.  
  21. if((order[a[i] - 'a']) > (order[b[i] - 'a']))
  22. return false;
  23. else
  24. return true;
  25. }
  26. }
  27.  
  28. if(a.length() > b.length())
  29. return false;
  30. else
  31. return true;
  32.  
  33. return false;
  34. }
  35.  
  36. int main()
  37. {
  38. cin>>t;
  39. while(t--) {
  40. cin>>alphabet>>n;
  41.  
  42. for(int i = 0; i < alphabet.length(); i++)
  43. order[(alphabet[i] - 'a')] = i;
  44.  
  45. for(int i = 0; i < n; i++)
  46. cin>>words[i];
  47.  
  48. sort(words, words + n, compare);
  49.  
  50. for(int i = 0; i < n; i++)
  51. cout<<words[i]<<endl;
  52. }
  53.  
  54. return 0;
  55. }
  56.  
Success #stdin #stdout 0s 5028KB
stdin
2
re
3
ere
rer
re

balujemy
5
bel
luba
lej
bal
leje
stdout
re
rer
ere
bal
bel
luba
lej
leje