fork download
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <bits/stdc++.h>
  3. #include <iomanip>
  4. using namespace std;
  5.  
  6. #define ll long long
  7. #define ld long double
  8. const ll max_size = 1e6 + 5;
  9. const ll moD = 1e9 + 7;
  10.  
  11. ll spf[max_size];
  12.  
  13. ll power(ll base, ll exp, ll mod)
  14. {
  15. if (exp == 0)
  16. return 1 % mod;
  17.  
  18. ll half = power(base, exp / 2, mod);
  19. ll ans = (half * half) % mod;
  20.  
  21. if (exp % 2 == 1)
  22. ans = (ans * base) % mod;
  23.  
  24. return ans;
  25. }
  26.  
  27. ll gcd(ll a, ll b)
  28. {
  29. if (b == 0)
  30. return a;
  31. return gcd(b, a % b);
  32. }
  33.  
  34. ll lcm(ll a, ll b)
  35. {
  36. return a / gcd(a, b) * b;
  37. }
  38.  
  39. void sieve()
  40. {
  41. for (int i = 1; i < max_size; i++)
  42. spf[i] = i;
  43.  
  44. for (int p = 2; p * p < max_size; p++)
  45. {
  46. if (spf[p] == p)
  47. {
  48. for (int i = p * p; i < max_size; i += p)
  49. {
  50. if (spf[i] == i)
  51. spf[i] = p;
  52. }
  53. }
  54. }
  55. }
  56.  
  57. vector<pair<ll, ll>> primeFactorization(ll x)
  58. {
  59. vector<pair<ll, ll>> factors;
  60. while (x > 1)
  61. {
  62. ll prime = spf[x];
  63. ll count = 0;
  64.  
  65. while (x % prime == 0)
  66. {
  67. count++;
  68. x /= prime;
  69. }
  70. factors.emplace_back(prime, count);
  71. }
  72. return factors;
  73. }
  74.  
  75. void generateDivisors(const vector<pair<ll, ll>> &factors, vector<ll> &divisors, ll current = 1, int index = 0)
  76. {
  77. if (index == factors.size())
  78. {
  79. divisors.push_back(current);
  80. return;
  81. }
  82. ll prime = factors[index].first;
  83. ll exp = factors[index].second;
  84.  
  85. for (int i = 0; i <= exp; i++)
  86. {
  87. generateDivisors(factors, divisors, current, index + 1);
  88. current *= prime;
  89. }
  90. }
  91.  
  92. vector<ll> prefixSum(vector<ll> &v)
  93. {
  94. vector<ll> vc(v.size());
  95. vc[0] = v[0];
  96. for (int i = 1; i < v.size(); i++)
  97. {
  98. vc[i] = vc[i - 1] + v[i];
  99. }
  100.  
  101. return vc;
  102. }
  103.  
  104. ld Gamma(ld n)
  105. {
  106. return tgammal(n);
  107. }
  108.  
  109. ld average(vector<ld> &vector)
  110. {
  111. if (vector.empty())
  112. {
  113. return 0.0;
  114. }
  115. ld sum = 0.0;
  116. for (ld e : vector)
  117. {
  118. sum += e;
  119. }
  120. return static_cast<ld>(sum) / vector.size();
  121. }
  122.  
  123. ll binarySearch(vector<ll> &v, ll target)
  124. {
  125. ll l = 0, r = v.size() - 1;
  126. while (l <= r)
  127. {
  128. ll m = l + (r - l) / 2;
  129. if (v[m] == target)
  130. {
  131. return m;
  132. }
  133. else if (v[m] < target)
  134. l = m + 1;
  135. else
  136. r = m - 1;
  137. }
  138. return -1;
  139. }
  140.  
  141. ll sum(ll n)
  142. {
  143. return n * (n + 1) / 2;
  144. }
  145. ll analysis(ll m)
  146. {
  147. ll ans1 = (-1 + sqrt(1 + (4 * 2 * m))) / 2;
  148. ll ans2 = (-1 - sqrt(1 + (4 * 2 * m))) / 2;
  149. return max(ans1, ans2);
  150. }
  151.  
  152. ll factorial(ll n)
  153. {
  154. if (n == 0 || n == 1)
  155. return 1;
  156. else
  157. return n * factorial(n - 1);
  158. }
  159. int main()
  160. {
  161. //ios::sync_with_stdio(false);
  162. //cin.tie(nullptr);
  163.  
  164. // freopen("mex.in", "r", stdin);
  165. // freopen("mex.out", "w", stdout);
  166.  
  167. string s;
  168. while (getline(cin, s))
  169. {
  170. deque<char> dq;
  171. string st="";
  172. bool front = false;
  173.  
  174. for (char c : s)
  175. {
  176. if (c == '[')
  177. {
  178. front = true;
  179. st.clear();
  180. }
  181. else if (c == ']')
  182. {
  183. front = false;
  184. for (int i = st.size() - 1; i >= 0; i--)
  185. dq.push_front(st[i]);
  186. st.clear();
  187. }
  188. else
  189. {
  190. if (front)
  191. st += c;
  192. else
  193. dq.push_back(c);
  194. }
  195. }
  196.  
  197. for (char c : dq)
  198. cout << c;
  199. cout << '\n';
  200. }
  201. return 0;
  202. }
  203.  
Success #stdin #stdout 0.01s 5324KB
stdin
[hello[world
stdout