# Untitled

a guest
Jun 22nd, 2019
5,024
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
1. /// author: Mr.Hakimov
2.
3. #include <bits/stdc++.h>
4. #include <chrono>
5.
6. #define all(x) (x).begin(), (x).end()
7. #define fin(s) freopen(s, "r", stdin);
8. #define fout(s) freopen(s, "w", stdout);
9.
10. using namespace std;
11.
12. typedef long long LL;
13. typedef long double LD;
14.
15. int TN = 1;
16.
17. void showDeque(deque<int> d) {
18. int n = d.size();
19. for (int i = 0; i < n; i++) {
20. cout << d.front() << " ";
21. d.push_back(d.front());
22. d.pop_front();
23. }
24. cout << endl << "==" << endl;
25. }
26.
27. void solve() {
28. int n;
29. int q;
30. cin >> n >> q;
31. deque<int> d;
32. int maxValue = -1;
33. for (int i = 0; i < n; i++) {
34. int a_i;
35. cin >> a_i;
36. d.push_back(a_i);
37. maxValue = max(maxValue, a_i);
38. }
39.
40. map<int, pair<int, int>> answer;
41.
42. int maxIndex = 0;
43. while (true) {
44. /// showDeque(d);
45. int first = d.front();
46. d.pop_front();
47. int second = d.front();
48. d.pop_front();
49.
50. if (first == maxValue) {
51. d.push_front(second);
52. d.push_front(first);
53. break;
54. }
55.
56. maxIndex++;
57. answer[maxIndex] = {first, second};
58.
59. if (second > first) {
60. swap(first, second);
61. }
62.
63. d.push_front(first);
64. d.push_back(second);
65. }
66.
67. int a[n];
68. /// showDeque(d);
69. for (int i = 0; i < n; i++) {
70. a[i] = d.front();
71. d.pop_front();
72. }
73.
74. for (int i = 0; i < q; i++) {
75. LL m_j;
76. cin >> m_j;
77. if (m_j <= maxIndex) {
78. cout << answer[m_j].first << " " << answer[m_j].second << '\n';
79. } else {
80. cout << maxValue << " " << a[(m_j - (maxIndex + 1)) % (n - 1) + 1] << '\n';
81. }
82. }
83. }
84.
85. int main() {
86. auto start = chrono::steady_clock::now();
87. ios_base::sync_with_stdio(0);
88. cin.tie(nullptr); cout.tie(nullptr);
89. /// =========================================
90. /// fin("input.txt"); fout("output.txt");
91. /// fin("file.in"); fout("file.out");
92. /// cin >> TN;
93. /// =========================================
94. while (TN--) solve();
95. auto finish = chrono::steady_clock::now();
96. auto elapsed_ms = chrono::duration_cast<chrono::milliseconds>(finish - start);
97. cerr << endl << "Time: " << elapsed_ms.count() << " ms\n";
98. return 0;
99. }