fork download
  1. /* GO HARD OR GO HOME */
  2.  
  3. #include <iostream>
  4. #include <bits/stdc++.h>
  5. #include <iomanip>
  6. using namespace std;
  7. #define rep(i, a, b) for(int i = a; i <= (b); ++i)
  8. #define all(x) begin(x), end(x)
  9. #define sz(x) (int)(x).size()
  10. typedef long long ll;
  11. typedef pair<int, int> pii;
  12. typedef vector<ll> vi;
  13. #define fastio ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
  14. typedef long long ll;
  15. typedef unsigned long long ull;
  16. #define pq priority_queue
  17. #define F first
  18. #define S second
  19. #define pb push_back
  20. #define RANGE (r-l+1)
  21. #define CEIL(a,b) (((a)/(b))+(((a)%(b))?1:0))
  22. #define YES cout<<"Yes"<<endl
  23. #define NO cout<<"No"<<endl
  24. void file() {
  25. #ifndef ONLINE_JUDGE
  26. freopen("input.txt", "r", stdin);
  27. freopen("output.txt", "w", stdout);
  28. #endif
  29. }
  30. void solve() {
  31. int n; cin >> n;
  32. pair<int, int> mp[26];
  33. int lengths[15];
  34. for(int i=0; i<26; i++) mp[i] = {-1, -1};
  35. for (int i = 0; i < n; i++) {
  36. string s;
  37. cin >> s;
  38. lengths[i] = s.size();
  39. for (int j = 0; j < (int)s.size(); j++) {
  40. char c = s[j];
  41. mp[c - 'a'] = {i, j};
  42. }
  43. }
  44. string ability; cin >> ability;
  45. stack<pair<int, int>> st;
  46. int cnt =0; bool flag = 1;
  47. for (char c : ability) {
  48. if (mp[c -'a'].first == -1) {
  49. flag = 0;
  50. break;
  51. }
  52. int id = mp[c-'a'].first;
  53. int pos = mp[c-'a'].second;
  54. if (pos == 0) {
  55. cnt++;
  56. if (lengths[id] > 1) {
  57. st.push({id, 0});
  58. }
  59. }
  60. else {
  61. if (st.empty()) {
  62. flag = 0;
  63. break;
  64. }
  65. pair<int, int> p = st.top();
  66. st.pop();
  67. if (p.first == id && p.second +1 == pos) {
  68. if (pos < lengths[id] -1 ) {
  69. st.push({id, pos});
  70. }
  71. }
  72. else {
  73. flag = 0;
  74. break;
  75. }
  76. }
  77. }
  78. if (flag && st.empty()) {
  79. YES << cnt+1 << endl;
  80. }
  81. else {
  82. NO;
  83. }
  84.  
  85.  
  86. }
  87.  
  88. int main() {
  89. file();
  90. fastio;
  91. int t;
  92. cin >> t;
  93. while (t--) {
  94. solve();
  95. }
  96. // solve();
  97. }
Success #stdin #stdout 0s 5328KB
stdin
2
3
abc
def
pqrt
pqrtadefbcpqrt
3
abc
def
pqrt
pqntadefbcpqrt
stdout
Yes
5
No