fork download
  1. #include<iostream>
  2. #include<vector>
  3. #include<algorithm>
  4. using namespace std;
  5.  
  6. int main(){
  7. ios::sync_with_stdio(false);
  8. cin.tie(nullptr);
  9. int t;
  10. cin >> t;
  11. while(t--){
  12. int a, b, ab, ba, suma, sumb, con = 0, cur = 0;
  13. string s;
  14. vector<int> AB, BA, X;
  15. cin >> s >> a >> b >> ab >> ba;
  16.  
  17. for(int i = 0; i < s.size(); i++){
  18. if(s[i] == 'A')a--;
  19. if(s[i] == 'B')b--;
  20. if(i == 0 || s[i] == s[i-1]){
  21. if(con % 2 && con > 1)X.push_back(con / 2);
  22. else{
  23. if(cur && con > 1)BA.push_back(con / 2);
  24. else if(con > 1)AB.push_back(con / 2);
  25. }
  26. if(s[i] == 'A')cur = 0;
  27. if(s[i] == 'B')cur = 1;
  28. con = 1;
  29. }
  30. else{
  31. con++;
  32. }
  33. }
  34.  
  35. if(con % 2 && con > 1) X.push_back(con / 2);
  36. else {
  37. if(cur && con > 1) BA.push_back(con / 2);
  38. else if(con > 1)AB.push_back(con / 2);
  39. }
  40.  
  41. sort(BA.begin(), BA.end());
  42. sort(AB.begin(), AB.end());
  43. sort(X.begin(), X.end());
  44.  
  45.  
  46. for(int i = 0; i < BA.size(); i++){
  47. if(ba > 0){
  48. int r = min(ba, BA[i]);
  49. ba -= r;
  50. a += r;
  51. b += r;
  52. BA[i] -= r;
  53. }
  54. if(ba == 0 && BA[i] > 0 && ab > 0){
  55. BA[i] --;
  56. int r = min(ab, BA[i]);
  57. ab -= r;
  58. a += r;
  59. b += r;
  60. BA[i] -= r;
  61. }
  62. }
  63. for(int i = 0; i < AB.size(); i++){
  64. if(ab > 0){
  65. int r = min(ab, AB[i]);
  66. ab -= r;
  67. a += r;
  68. b += r;
  69. AB[i] -= r;
  70. }
  71. if(ab == 0 && AB[i] > 0 && ba > 0){
  72. AB[i] --;
  73. int r = min(ba, AB[i]);
  74. ba -= r;
  75. a += r;
  76. b += r;
  77. AB[i] -= r;
  78. }
  79. }
  80.  
  81. int n = ab + ba;
  82. for(int i = 0; i < X.size(); i++){
  83. if(n > 0){
  84. int r = min(n, X[i]);
  85. n -= r;
  86. a += r;
  87. b += r;
  88. X[i] -= r;
  89. }
  90. else break;
  91. }
  92. if(a < 0 || b < 0)cout << "No\n";
  93. else cout << "Yes\n";
  94. }
  95.  
  96. }
Success #stdin #stdout 0s 5292KB
stdin
7
A
0 0 10 10
B
0 1 0 0
ABA
0 0 1 1
ABBABAAB
5 5 0 0
ABABBAABBAAB
1 1 2 3
ABBBBAB
0 3 2 0
BAABBA
1 3 2 0
stdout
No
Yes
No
Yes
Yes
Yes
No