Pagini recente » Cod sursa (job #2976669) | Cod sursa (job #601655) | Cod sursa (job #2931033) | Cod sursa (job #2709960) | Cod sursa (job #2628729)
#include <bits/stdc++.h>
using namespace std;
#define NMAX 100005
int n, m, st, dr;
struct {
int val, pos;
} v[NMAX];
void sort(int left, int right) {
int mini = left, maxi= right;
int mid = v[left + (right - left) / 2].val;
do {
while(v[mini].val < mid) {
mini++;
}
while(v[maxi].val > mid) {
maxi--;
}
if(mini <= maxi) {
swap(v[mini].val, v[maxi].val);
swap(v[mini++].pos, v[maxi--].pos);
}
} while(mini <= maxi);
if(left < maxi) {
sort(left, maxi);
}
if(mini < right) {
sort(mini, right);
}
}
void solve() {
int p = 1;
while(v[p].pos < st || v[p].pos > dr) {
++p;
}
printf("%d\n", v[p].val);
}
void read() {
scanf("%d%d", &n, &m);
for(int i = 1; i <= n; i++) {
scanf("%d", &v[i].val);
v[i].pos = i;
}
sort(1, n);
for(int i = 1; i <= m; i++) {
scanf("%d%d", &st, &dr);
solve();
}
}
int main() {
freopen("rmq.in", "r", stdin);
freopen("rmq.out", "w", stdout);
read();
return 0;
}