fork download
  1. #include <iostream>
  2. #include <bits/stdc++.h>
  3. #include <ext/pb_ds/assoc_container.hpp>
  4. #include <ext/pb_ds/tree_policy.hpp>
  5. #define ll long long
  6. #define ld long double
  7. #define endl "\n"
  8. #define IN() freopen("bad-memes.in", "r", stdin);
  9. using namespace __gnu_pbds;
  10. using namespace std;
  11. typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> orderSet;
  12. void Erase(orderSet &s, int val) {
  13. int rank = s.order_of_key(val);
  14. auto it = s.find_by_order(rank);
  15. s.erase(it);
  16. }
  17. bool is_prime(ll n) {
  18. if(n<2) {
  19. return false;
  20. }
  21. for (int i=2;i*i<=n;++i) {
  22. if(n%i==0) {
  23. return false;
  24. }
  25. }
  26. return true;
  27. }
  28. vector<ll> getDivisors(ll x) {
  29. vector<ll> divisors;
  30. for (ll i = 1; i * i <= x; i++) {
  31. if (x % i == 0) {
  32. divisors.push_back(i);
  33. if (i != x / i) {
  34. divisors.push_back(x / i);
  35. }
  36. }
  37. }
  38. sort(divisors.begin(), divisors.end());
  39. return divisors;
  40. }
  41. map<ll, ll> factors(ll n) {
  42. map<ll, ll> fact;
  43. while (n % 2 == 0) {
  44. fact[2]++;
  45. n /= 2;
  46. }
  47. for (ll i = 3; i * i <= n; i += 2) {
  48. while (n % i == 0) {
  49. fact[i]++;
  50. n /= i;
  51. }
  52. }
  53. if (n > 2) {
  54. fact[n]++;
  55. }
  56. return fact;
  57. }
  58. const int n=1e5;
  59. bool notprime[n];
  60. vector<int>primes;
  61. void sieve(ll n) {
  62. memset(notprime,false,sizeof(notprime));
  63. notprime[0]=notprime[1]=false;
  64. for (int i=2;i<=n;++i) {
  65. if(!notprime[i]) {
  66. primes.push_back(i);
  67. for (int j=i*2;j<=n;j+=i) {
  68. notprime[j]=true;
  69. }
  70. }
  71. }
  72. }
  73.  
  74. void linear_sieve() {
  75. primes.clear();
  76. memset(notprime,false,sizeof(notprime));
  77. for (int i=2;i<=n;++i) {
  78. if(!notprime[i]) primes.push_back(i);
  79. for (int j=0;j<primes.size()&&i*primes[j]<n;++j) {
  80. notprime[i*primes[j]]=true;
  81. if(i%primes[j]==0) {
  82. break;
  83. }
  84. }
  85. }
  86. }
  87.  
  88. ll lcm(ll a, ll b)
  89. {
  90. return a * (b / __gcd(a, b));
  91. }
  92. bool div(ll num) {
  93. return num%3==0;
  94. }
  95. bool even(ll num) {
  96. return num % 2 == 0;
  97. }
  98. /*ll sum(ll num) {
  99.   string s = to_string(num);
  100.   ll summ = 0;
  101.   for (ll i=0;i<s.length();++i) {
  102.   summ += (s[i] - '0');
  103.   }
  104.   return summ;
  105. }
  106. */
  107. ll gcd(ll a, ll b) {
  108. while (b != 0) {
  109. ll temp = b;
  110. b = a % b;
  111. a = temp;
  112. }
  113. return a;
  114. }
  115. ll sum(ll n) {
  116. return n*(n+1)/2;
  117. }
  118. ll factorial(ll n) {
  119. ll f=1;
  120. while (n>0) {
  121. f=f*n;
  122. n--;
  123. }
  124. return f;
  125. }
  126.  
  127. long long poww(long long base, long long exp, int mod) {
  128. long long r = 1;
  129. while (exp > 0) {
  130. if (exp % 2 == 1)r = (r * base) % mod;
  131. base = (base * base) % mod;
  132. exp /= 2;
  133. }return r;
  134. }
  135. const int MOD=1e9+7;
  136. double root(double x, double n) {
  137. return pow(x, 1.0 / n);
  138. }
  139. void manar()
  140. {
  141. ios_base::sync_with_stdio(false);
  142. cin.tie(NULL);
  143. cout.tie(NULL);
  144. }
  145. long long f(long long r) {
  146. return r*(r+1)/2;
  147. }
  148. long long mod(long long a, long long m) {
  149. return (a % m + m) % m; // Ensure positive result of modulo
  150. }
  151. void manora() {
  152. int n;
  153. char s;
  154. cin >> n ;
  155. vector<int>v(n);
  156. for (int i = 0; i < n; ++i) {
  157. cin>>v[i];
  158. }
  159. set<int> ms;
  160. int l = 0, r = n - 1;
  161. int q;
  162. cin>>q;
  163. while (q--) {
  164. cin >> s;
  165.  
  166. if (s == 'L') {
  167. if (l < n) {
  168. ms.insert(v[l]);
  169. l++;
  170. }
  171. }
  172. else if (s == 'R') {
  173. if (r >= 0) {
  174. ms.insert(v[r]);
  175. r--;
  176. }
  177. }
  178. else if (s == 'Q') {
  179. if (!ms.empty()) {
  180. cout << *ms.rbegin() << endl;
  181. ms.erase(--ms.end());
  182. } else {
  183. cout << -1 << endl;
  184. }
  185. }
  186. }
  187.  
  188. }
  189. int main() {
  190. manar();
  191. manora();
  192. /* int t = 1;
  193.   cin >> t;
  194.   manora();
  195.   }
  196.   */
  197.  
  198.  
  199.  
  200.  
  201. return 0;
  202. }
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
Success #stdin #stdout 0.01s 5280KB
stdin
Standard input is empty
stdout
Standard output is empty