fork download
  1. #include <iostream>
  2. #include <set>
  3. #include <map>
  4. #include <vector>
  5. #include <iomanip>
  6. #include <stack>
  7. #include <deque>
  8. #include <queue>
  9. #include <string>
  10. #include <string.h>
  11. #include <cstdio>
  12. #include <cstring>
  13. #include <cmath>
  14. #include <math.h>
  15. #include <algorithm>
  16. #include <stdio.h>
  17. #include <stdlib.h>
  18.  
  19. using namespace std;
  20.  
  21. typedef long long ll;
  22. typedef long double ld;
  23. typedef unsigned long long ull;
  24.  
  25. const ll INF = 1e18;
  26. const ll MAXN = 1e3 + 100;
  27. const ll P = 1e9 + 7;
  28. const ld pi = acos(-1);
  29. const ld eps = 1e-7;
  30. const ll base = 1e9;
  31.  
  32. #define pb push_back
  33. #define pf push_front
  34. #define ppb pop_back
  35. #define ppf pop_front
  36. #define mp make_pair
  37. #define pll pair <ll, ll>
  38. #define pld pair <ld, ld>
  39. #define ALL(a) a.begin(), a.end()
  40.  
  41. string s;
  42.  
  43. void repl(ll j, ll i, char c)
  44. {
  45. s[j] = s[i] = '<';
  46. s[j + 1] = s[i + 2] = c;
  47. s[j + 2] = s[i + 3] = '>';
  48. return;
  49. }
  50. bool checkb (char a)
  51. {
  52. return a == 'b' || a == 'B';
  53. }
  54. bool checku (char a)
  55. {
  56. return a == 'u' || a == 'U';
  57. }
  58. bool checki (char a)
  59. {
  60. return a == 'i' || a == 'I';
  61. }
  62. int main()
  63. {
  64. ios::sync_with_stdio(0);
  65. cin.tie(0);
  66. cout.tie(0);
  67.  
  68. string b, u, i1;
  69. b = u = i1 = "";
  70. getline(cin, s);
  71. ll nb = 0, nu = 0, ni = 0;
  72.  
  73. for (ll i = 0; i < (ll)s.size() - 3; i++)
  74. {
  75. if (s[i] == '[' && s[i + 2] ==']')
  76. {
  77. if (checkb(s[i + 1]))
  78. b[nb++] = i;
  79. if (checku(s[i + 1]))
  80. u[nu++] = i;
  81. if (checki(s[i + 1]))
  82. i1[ni++] = i;
  83. }
  84. else
  85. if (s[i] == '[' && s[i + 1] == '/' && s[i + 3] == ']')
  86. {
  87. if (nb > 0 && checkb(s[i + 2]))
  88. repl(b[--nb], i, 'b');
  89. if (nu > 0 && checku(s[i + 2]))
  90. repl(u[--nu], i, 'u');
  91. if (ni > 0 && checki(s[i + 2]))
  92. repl(i1[--ni], i, 'i');
  93. }
  94. }
  95.  
  96. cout << s;
  97.  
  98. return 0;
  99. }
  100.  
Success #stdin #stdout 0s 15232KB
stdin
[b][b][/b]
stdout
[b]<b></b>