This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define Loop(x,l,r) for (ll x = (l); x < (r); ++x)
typedef long long ll;
typedef std::pair<int,int> pii;
using namespace std;
vector<int> shf(vector<int> vec)
{
int n = vec.size();
vector<int> ans;
int p0 = 0, p1 = n/2;
Loop (_,0,n) {
if (p1 == n || (p0 < n/2 && vec[p0] < vec[p1]))
ans.push_back(vec[p0++]);
else
ans.push_back(vec[p1++]);
}
return ans;
}
const int N = 1'000'010;
int ans[N];
vector<pii> Q[N];
int main()
{
cin.tie(0) -> sync_with_stdio(false);
int n, q;
cin >> n >> q;
vector<int> vec(n);
//mt19937_64 rd(chrono::high_resolution_clock::now().time_since_epoch().count());
//iota(vec.begin(), vec.end(), 0);
//shuffle(vec.begin(), vec.end(), rd);
for (int &x : vec)
cin >> x;
//vecs.push_back(vec);
Loop (i,0,q) {
int t, p;
cin >> t >> p;
--p;
t = min(t, n/2);
Q[t].push_back({p, i});
}
Loop (i,0,n/2) {
for (auto [p, j] : Q[i])
ans[j] = vec[p];
inplace_merge(vec.data(), vec.data()+n/2, vec.data()+n);//vec = shf(vec);
}
for (auto [p, j] : Q[n/2])
ans[j] = vec[p];
Loop (i,0,q)
cout << ans[i] << '\n';
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |