A. Valeriy and Deque Codeforces Solution | Codeforces Round 569 (Div. 1)
Raunit Verma - in Codeforces
Views: 0
Recently, on the course of algorithms and data structures, Valeriy learned how to use a deque. He built a deque filled with 𝑛 elements. The 𝑖 -th element is 𝑎𝑖 (𝑖 = 1,2,…,𝑛 ). He gradually takes the first two leftmost elements from the deque (let's call them 𝐴 and 𝐵 , respectively), and then does the following:
Solution
void solve()
{
int n, m;
cin >> n >> m;
vi v(n);
deque<int> q;
for (int i = 0; i < n; i++)
{
cin >> v[i];
q.push_back(v[i]);
}
vector<pii> f;
int big = 0, small;
for (int i = 0; i < 2 * n; i++)
{
int first = q.front();
q.pop_front();
int second = q.front();
q.pop_front();
big = max(first, second);
small = min(first, second);
f.push_back({first, second});
q.push_front(big);
q.push_back(small);
}
// print1(f);
for (int i = 0; i < m; i++)
{
int k;
cin >> k;
if (k <= n)
{
cout << f[k - 1].first << " " << f[k - 1].second << endl;
}
else
{
k %= (n - 1);
k += n - 2;
cout << f[k].first << " " << f[k].second << endl;
}
}
// 1 2 3 4 5
// 2 3 4 5 1
// 3 4 5 1 2
// 4 5 1 2 3
// 5 1 2 3 4
// 5 2 3 4 1
// 5 3 4 1 2
// 5 4 1 2 3
// 5 1 2 3 4
// 5 2 3 4 1
// 5 3 4 1 2
// 5 4 1 2 3
// 5 1 2 3 4
// 5 2 3 4 1
}
#include <bits/stdc++.h>
using namespace std;
#define int long long int
#define F first
#define S second
#define pb push_back
#define si set<int>
#define vi vector<int>
#define pii pair<int, int>
#define vpi vector<pii>
#define vpp vector<pair<int, pii>>
#define mii map<int, int>
#define mpi map<pii, int>
#define spi set<pii>
#define endl "\n"
#define sz(x) ((int)x.size())
#define all(p) p.begin(), p.end()
#define double long double
#define que_max priority_queue<int>
#define que_min priority_queue<int, vi, greater<int>>
#define bug(...) __f(#__VA_ARGS__, __VA_ARGS__)
#define print(a) \
for (auto x : a) \
cout << x << " "; \
cout << endl
#define print1(a) \
for (auto x : a) \
cout << x.F << " " << x.S << endl
#define print2(a, x, y) \
for (int i = x; i < y; i++) \
cout << a[i] << " "; \
cout << endl
#define scanit(a, n) \
for (ll indexaa = 0; indexaa < n; indexaa++) \
cin >> a[indexaa];
inline int power(int a, int b)
{
int x = 1;
while (b)
{
if (b & 1)
x *= a;
a *= a;
b >>= 1;
}
return x;
}
template <typename Arg1>
void __f(const char *name, Arg1 &&arg1) { cout << name << " : " << arg1 << endl; }
template <typename Arg1, typename... Args>
void __f(const char *names, Arg1 &&arg1, Args &&...args)
{
const char *comma = strchr(names + 1, ',');
cout.write(names, comma - names) << " : " << arg1 << " | ";
__f(comma + 1, args...);
}
const int N = 200005;
void solve()
{
int n, m;
cin >> n >> m;
vi v(n);
deque<int> q;
for (int i = 0; i < n; i++)
{
cin >> v[i];
q.push_back(v[i]);
}
vector<pii> f;
int big = 0, small;
for (int i = 0; i < 2 * n; i++)
{
int first = q.front();
q.pop_front();
int second = q.front();
q.pop_front();
big = max(first, second);
small = min(first, second);
f.push_back({first, second});
q.push_front(big);
q.push_back(small);
}
// print1(f);
for (int i = 0; i < m; i++)
{
int k;
cin >> k;
if (k <= n)
{
cout << f[k - 1].first << " " << f[k - 1].second << endl;
}
else
{
k %= (n - 1);
k += n - 2;
cout << f[k].first << " " << f[k].second << endl;
}
}
// 1 2 3 4 5
// 2 3 4 5 1
// 3 4 5 1 2
// 4 5 1 2 3
// 5 1 2 3 4
// 5 2 3 4 1
// 5 3 4 1 2
// 5 4 1 2 3
// 5 1 2 3 4
// 5 2 3 4 1
// 5 3 4 1 2
// 5 4 1 2 3
// 5 1 2 3 4
// 5 2 3 4 1
}
int32_t main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
clock_t z = clock();
int t = 1;
// cin >> t;
while (t--)
solve();
return 0;
}
TagsA. Valeriy and DequeCodeforces Round 569 (Div. 1)data structuresimplementation*1500Codeforces
Raunit Verma
Technical Writer at CodingKaro
Share this on