Pagini recente » Cod sursa (job #1811994) | Cod sursa (job #2555676) | Cod sursa (job #538523) | Cod sursa (job #593599) | Cod sursa (job #3212343)
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int,int>;
#define pb push_back
ifstream fin("rmq.in");
ofstream fout("rmq.out");
const int N = 1e5+3;
int n, ST[18][N];
int query(int,int);
int main()
{
int m; fin >> n >> m;
for (int i = 1; i <= n; i++) fin >> ST[0][i];
for (int i = 1, p = 2; p <= n; i++, p *= 2)
for (int j = 1; j + p / 2 <= n; j++)
ST[i][j] = min(ST[i-1][j], ST[i-1][j + p/2]);
while (m--){
int x, y; fin >> x >> y;
if (x > y) swap(x, y);
fout << query(x,y) << '\n';
}
return 0;
}
int query(int l, int r){
int pw = 31 - __builtin_clz(r - l + 1);
return min(ST[pw][l], ST[pw][r - (1<<pw) + 1]);
}